text:
I haven't eaten and drunk many things on that list, so I guess that I'll have to expand my culinary knowledge a little more in the near future!
Here what you have to do:
1. Copy this list into your blog or journal, including these instructions.
2. Bold all the items you've eaten.
3. Cross out any items that you would never consider eating.
4. Optional extra - Post a comment at "Very Good Taste" (UK) linking to your results.
1. Venison (I love that!)
2. Nettle Tea (I've also eaten Nettle Soup)
3. Huevos Rancheros (I'm addicted to homemade Tex-Mex food!)
4. Steak Tartare (see my recipe)
5. Crocodile (I'd love to taste that meat...)
6. Black Pudding/Blutwurst/Boudin (Yummy! See me recipe.)
7. Cheese Fondue (see my recipe)
8. Carp
9. Borscht
10. Baba Ghanoush (see my recipe)
11. Calamari
12. Pho
13. PB&J Sandwich (I don't like to eat my Peanut Butter with jam, only with honey or chocolate spread!)
14. Aloo Gobi
15. Hot Dog, from a street cart (Better at home, though./See my recipe.)
16. Epoisses Cheese
17. Black Truffle (Only in Brie de Meaux cheese.)
18. Fruit Wine, made from something other than grapes
19. Steamed Pork Buns (Both homemade and at the restaurant.)
20. Pistachio Ice Cream
21. Heirloom Tomatoes
22. Fresh Wild Berries (blackberries, blueberries, etc...)
23. Foie Gras
24. Rice And Beans
25. Brawn or Head Cheese
26. Raw Scotch Bonnet Pepper (I love chilli peppers, but those are difficult to find here. I'm still looking for them.)
27. Dulce De Leche (Homemade only.)
28. Oysters (I don't fancy eating a living animal!!!)
29. Baklava (I adore that speciality!)
30. Bagna Cauda
31. Wasabi Peas
32. Clam Chowder, in a sourdough bowl (I'd love to!)
33. Salted Lassi (Only sweet Lassi.)
34. Sauerkraut
35. Root Beer Float
36. Cognac with a Fat Cigar (I don't smoke)
37. Clotted Cream Tea (in England and at home, with homemade Clotted Cream)
38. Vodka Jelly/Jell-O
39. Gumbo
40. Oxtail
41. Curried Goat (only Goat's Soup in Greece)
42. Whole Insects (I could never eat that!!!! Eeeek!!!)
43. Phaal
44. Goat's Milk
45. Malt Whisky, from a bottle worth £60/$120 or more (I don't have that money to spend on alcohol as I only use Whisky for cooking!).
46. Fugu
47. Chicken Tikka Masala
48. Ee
49. Krispy Kreme original glazed doughnut
50. Sea Urchin
51. Prickly Pear
52. Umeboshi
53. Abalone
54. Paneer
55. McDonald's Big Mac Meal (Such a long time ago when I was still at primary school. I don't go to McDonald's anymore...)
56. Spaetzle/Spätzli (I make that all the time. See recipe.)
57. Dirty Gin Martini
58. Beer Above 8% ABV
59. Poutine
60. Carob Chips
61. S'mores
62. Sweetbreads
63. Kaolin
64. Currywurst (Homemade.)
65. Durian (I loved it, but the fresh fruit costs a lot of money)
66. Frogs' Legs (Once at a Chinese restaurant in France and never again. It was too bland and I find it too cruel.)
67. Beignets, Churros, Elephant Ears or Funnel Cake
68. Haggis
69. Fried Plantain Bananas (Delicious!)
70. Chitterlings or Andouillette
71. Gazpacho
72. Caviar and Blini (I love Blinis, but I can't care less for fish eggs, no matter how much they cost!)
73. Louche Absinthe (Only in chocolate..)
74. Gejetost or Brunost
75. Roadkill
76. Baijiu (I love that!)
77. Hostess Fruit Pie
78. Snail (Eeeeek!!!)
79. Lapsang Souchong (Delicious, especially when cooking!)
80. Bellini
81. Tom Yum (Homemade. Extremely scrumptious!)
82. Eggs Benedict
83. Pocky
84. Tasting Menu, at a three-Michelin-star restaurant (Not unless I win the lottery, LOL!)
85. Kobe Beef (I'd love to!)
86. Hare
87. Goulash
88. Flowers
89. Horse
90. Criollo Chocolate
91. Spam (Scrumptiously dirty!)
92. Soft Shell Crab
93. Rose Harissa (Normal Harrisa only.)
94. Catfish
95. Mole Poblano (Not yet. I still have to get hold of those special chillies in order to make that yummy sauce...)
96. Bagel and Lox (Yummyliscious when homemade!!! See recipe.)
97. Lobster Thermidor
98. Polenta
99. Jamaican Blue Mountain Coffee
100. Snake
My personal food list that everyone should try:
1. Burrata Cheese
2. Schabziger
3. Bulgogi
4. Steak & Kidney Pie
5. Good Fish & Chips
6. Yorkshire Puddings
7. Any Bars (Brownies, Blondies, Millionnaire's Shortbread, etc...)
8. Salée A La Crème (see recipe)
9. Homemade Burritos (see recipe)
10. Homemade Thai Curry Paste (see recipe)
11. Ostrich Meat
12. Brazilian Moqueca (see recipe)


text:
Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
In addition to the FAQ below, see also:
- EMF documentation, EMF Wiki Category
- EMF Query FAQ, EMF Validation FAQ, EMF Transaction FAQ
- 1 Newbie /General
- 1.1 What is EMF?
- 1.2 Where can I get EMF?
- 1.3 How do I get started with EMF?
- 1.4 What version of Eclipse do I need for EMF, SDO and XSD? Which EMF version will run on my Eclipse version?
- 1.5 What minimum version of Java do I need?
- 1.6 Are there any "real" example EMF models in Eclipse?
- 1.7 How does EMF perform in regard to serializing to relational databases? I am wondering if this framework suits central repository servers, where hundreds of thousand of instances are present. When is it mandatory to have a relational database as the EMF's object serialization target?
- 1.8 If using EMF in a non-Eclipse environment is feasible (licensing issues), what if any, advantages does using EMF have over using JAXB?
- 1.9 Why does EMF need a GenModel as well as an Ecore model to generate code?
- 2 Development
- 2.1 EMF is failing to load a resource. How can I make it recognize a non-standard archive URI scheme? Why does EMF fail to load resources when running on an application server or other specialized runtime?
- 2.2 Is there a built-in facility to check whether a given value is valid compared to the effective facets of its type?
- 2.3 I have a simple model consisting of a root that contains a single EList of children.The child type contains several attributes.I would like to create a custom editor such that the model is completely displayed in a table. How should I start? Overload getText() on the child item provider, and just return null for a property descriptor?
- 2.4 How big a job would it be to get the EMF editor generator to spit out Swing editor code instead of SWT/JFace code?
- 2.5 Are there any examples of EMF used standalone?
- 2.6 Is it possible to convert back from EMF model (ecore files or generated Java code?) to UML?
- 2.7 As of EMF 2.0.0.I20040408, it seems like the code templates in chapter 14.2.3 in the emf-book needs to be rewritten. Is this already done and published somewhere?
- 2.8 Can I link parts of UML diagrams to portions of the code in the EMF editor?
- 2.9 Is there an electronic version of the EMF book?
- 2.10 Is there a clean way to use an EMF model's generated editor in a standalone application?
- 2.11 I want to use EMF, SDO, or XSD in my standalone project, or include only a working subset of the code. What libraries (jar files) do I need in my CLASSPATH?
- 2.12 Does it matter what node in the genmodel tree I invoke Generate from?
- 2.13 Can model classes be in the Java default package?
- 2.14 Can annotated Java files use * imports?
- 2.15 Does regeneration/merge work for properties and plugin.xml files?
- 2.16 How do I use EMF in standalone applications (such as an ordinary main)?
- 2.17 How do I make my EMF standalone application Eclipse-aware?
- 2.18 How do I use EMF in a minimal OSGi application?
- 2.19 I get a PackageNotFoundException: e.g., "Package with uri 'http://com.example.company.ecore' not found." What do I need to do?
- 2.20 I get a DanglingHREFException: e.g., "org.eclipse.emf.ecore.xmi.DanglingHREFException: The object 'com.example.Foo@2f5dda ()' is not contained in a resource." What do I need to do?
- 2.21 Do I have to pre-register my static, generated package when running standalone (outside of Eclipse)?
- 2.22 How do I register a dynamic package?
- 2.23 Do I have to initialize and pre-register my dynamic packages?
- 2.24 How can I ensure that an xsi:schemaLocation is serialized for my packages?
- 2.25 Is there a built-in facility to check whether a given value is valid compared to the effective facets of its type?
- 2.26 I'm generating EMF models from xsd files. To generate relations between entities I use the following syntax, with the ecore:reference attribute on xsd:element...
- 2.27 I have an element that comprises four sub-elements derived from type <xs:string>. How can I examine the contents of an <xs:complexType>? How could I programmatically determine its restrictions/enumerations/etc.?
- 2.28 How does setIncrementalUpdate() work?
- 2.29 How can I load a XSDSchema from a simple Java String or from a DOM Tree?
- 2.30 How do I convert code that runs in an Eclipse environment to a standalone environment?
- 2.31 How do I create a Map in EMF?
- 2.32 What are Dynamic Templates?
- 2.33 How do I use Dynamic Templates?
- 2.34 How can I easily listen to changes for a specific object?
- 2.35 How can I retrieve an object and all of the objects it references(regardless of the kind of reference) and save them as a single resource?
- 2.36 How do I serialize a resource to a String instead of a file?
- 2.37 What EList implementation is generated When ?? - List of basic EList Implementations
- 2.38 What's the difference between the methods useIDs and useUUIDs in an XMLResourceImpl?
- 2.39 How can I use the EMF Ant tasks?
- 2.40 How can I split containment references across multiple resources to support cross resource containment?
- 2.41 Is EMF thread-safe?
- 2.42 I get a NullPointerException from BasicEMap.entryForKey() while loading in a multi-threaded application. What's the problem?
- 2.43 I get a NullPointerException from EcoreUtil.getAdapter() while using SDO in a multi-threaded application. What's the problem?
- 2.44 How do I preserve my property order, i. e. the order in the ecore model, in Property Sheet of the generated editor instead of default alphabetical ordering?
- 2.45 Platform URI Scheme
- 2.46 How do I map between an EMF Resource and an Eclipse IFile?
- 2.47 How do I update my Ecore and GenModel after the originating model has changed?
- 2.48 How can I control which instances are available as choices when editing a property in the properties view?
- 2.49 I have a whole bunch of generator models. How can I generate many models at once?
- 2.50 How to get a EMF Ecore model into a Papyrus class diagram
- 3 Downloading EMF
- 4 Modeling Standards
- 4.1 What is Model Driven Architecture (MDA)?
- 4.2 Does EMF support OMG XMI?
- 4.3 Can I create an EMF model using OMG XMI?
- 4.4 Can I create an EMF model using UMLTM modeling tools?
- 4.5 What is the relationship of OMGTM MOFTM to the EMF Ecore model?
- 4.6 What is the relationship of EMF to OMGTM MDATM?
- 4.7 What is the relationship of EMF to JMITM?
- 5 Service Data Objects (SDO)
- 5.1 What are Service Data Objects (SDO)?
- 5.2 What is the relationship between SDO & WDO?
- 5.3 What is the relationship between EMF & SDO?
- 5.4 How do I serialize the model of an SDO data graph?
- 5.5 What is the relationship between SDO & JDO?
- 5.6 What is the relationship between SDO & JAXB?
- 5.7 What is the relationship between SDO & ADO .NET?
Newbie /General
What is EMF?
The Eclipse Modeling Framework is a Java/XML framework for generating tools and other applications based on simple class models. EMF helps you rapidly turn models into efficient, correct, and easily customizable Java code. It is intended to provide the benefits of formal modeling, but with a very low cost of entry. In addition to code generation, it provides the ability to save objects as XML documents for interchange with other tools and applications. Models can be created using annotated Java, XML documents, or modeling tools like Rational Rose, then imported into EMF. The code generator turns a model into a set of Java implementation classes. These classes are extensible and regenerable - you can modify them by adding user-defined methods and instance variables. When the model changes, you can regenerate the implementation classes, and your modifications will be retained. This works both ways - changes in the Java code can be used to update the model.
Where can I get EMF?
Publically available builds are always listed on the EMF website.
To download them, go to the downloads page or install them via update manager.
Details about what was fixed in a given build can be seen on our release notes page.
How do I get started with EMF?
Start by reading the overview documents and the tutorials, followed by downloading the driver.
After going through the tutorial, you will have generated a completely working editor from nothing but a picture of the object model (i.e., the simple libarary model shown in the tutorial). If you run the generated editor, you can add and remove books and authors, edit the properties (e.g., the book title), copy, paste, drag-and-drop, etc. All with unlimited undo/redo. You can also save the document (the default framework serialization format is XMI).
The purpose of the tutorial is to illustrate the power of a model driven architecture (MDA). By providing a model for the data your application will manipulate, you can use EMF to generate a Java implementation for you. EMF.Edit can leverage the same model (meta) data to generate view support and even a working editor. Read the overview documents for more details.
What version of Eclipse do I need for EMF, SDO and XSD? Which EMF version will run on my Eclipse version?
The most recent version requirements and bleeding edge information about requirements can be seen on the EMF Downloads page.
- EMF 2.4.x runs on Eclipse 3.4.x.
- EMF 2.3.x runs on Eclipse 3.3.x.
- EMF 2.3 includes support for generics, and therefore requires JDK 1.5 (generator/runtime).
- EMF 2.3 can generate code that will run on JDK 1.4.2. See Runtime / Compilation Compatibility.
- EMF 2.2.x runs on Eclipse 3.2.x.
- EMF 2.1.x runs on Eclipse 3.1.x.
- EMF 2.0.2 through 2.0.5 run on Eclipse 3.0.2. EMF 2.0 & 2.0.1 run on Eclipse 3.0 & 3.0.1.
- EMF 1.0 & 1.1 run on Eclipse 2.0 & 2.1.
What minimum version of Java do I need?
- EMF 2.4.x requires JRE 1.5 or later.
- EMF 2.3.x requires JRE 1.5 or later.
- EMF 2.2.x requires JRE 1.4.2 or later.
- EMF 2.1.x requires JRE 1.4.2 or later.
- EMF 2.0.x requires JRE 1.3.1 or later.
- EMF 1.x requires JRE 1.3.1 or later.
Are there any "real" example EMF models in Eclipse?
Well, for starters, EMF itself contains two interesting models. The Ecore model serves as the meta-model for any EMF model you create -- it is the model that describes the structure of your models. The Genmodel controls generation of an EMF model. In fact, the generator UI that is used in the tutorial is the EMF.Edit editor for the Genmodel, which explains why it looks so much like the library editor in the tutorial. If you want to explore Ecore and Genmodel further, you'll find their Rose models and Java code in the EMF source package available on our download page. Of course, the code produced by the EMF generator is meant to be a starting place, so you'll see that much functionality has been manually added to both of these models. But, it's quite easy to see the same sort of generated patterns that appear in the simple library example. Ecore is in the org.eclipse.emf.ecore plugin, the Genmodel is in org.eclipse.emf.codegen.ecore, and its editor UI is in org.eclipse.emf.codegen.ecore.ui. You'll find the Rose models in the "model" subdirectory of the source for the former two plugins.
Finally, an even more complex example of an EMF model is XSD, the XML Schema Infoset Model, a subproject of the Eclipse Technology Project. XSD models the concrete and abstract relationships expressed in an XML schema document, providing an API to manipulate the model and an XML-schema-specific replacement for EMF's default XMI serialization. Of course, there's also an EMF.Edit-based XML schema editor built on it. For more on XML Schema, see the XSD FAQ.
How does EMF perform in regard to serializing to relational databases? I am wondering if this framework suits central repository servers, where hundreds of thousand of instances are present. When is it mandatory to have a relational database as the EMF's object serialization target?
There is no out of the box EMF support for RDB persistence, but several people have done or are doing such things themselves. It involves customized resources, or in the case of SDO - mediators. See also CDO and Teneo.
If using EMF in a non-Eclipse environment is feasible (licensing issues), what if any, advantages does using EMF have over using JAXB?
EMF and XSD are definitely intended to support standalone execution outside
Eclipse.Only the EMF jars are needed for standalone execution (as
in the FAQ).Within IBM, you should discuss licensing issues with the IBM Eclipse SDK
folks, since that's the supported distribution vehicle for EMF and XSD
IBM.I don't believe there are any issues as long as you stick to using
released (i.e., supported) drivers.
JAXB produces a simple Java API given an XML Schema and it does so using
essentially a black box design.EMF produces an Ecore model given an XML
Schema and then uses template-based generator technology to generate a rich
Java API (of hand written quality).The XML Schema to Ecore conversion
can be
tailored, the templates used to generate the Java API can be tailored, and
resulting Java API can be tailored.The generator supports merging
regeneration so that it will preserve your hand written changes.In other
words, EMF is far richer and more flexible, and supports a broader subset
XML Schema (especially in 2.0, where wildcards and mixed content will be
supported). See http://www.theserverside.com/tt/articles/article.tss?l=BindingXMLJava for more details.
Why does EMF need a GenModel as well as an Ecore model to generate code?
The GenModel is a decorator model for the Ecore model. It specifies information not available in the Ecore model and gives fine grained control over what's generated. For example, the Ecore model doesn't indicate where the code should be generated and what the plugin ID (if any) for that target should be; that's specified in the GenModel. The GenModel also lets you choose among various generation patterns. For example, do you want root interfaces to extend EObject, nothing, or something of your own choosing? And do you want to generate an editor that targets the Eclipse Rich Client Platform versus the Eclipse Integrated Development Environment? So you can think of the GenModel as a giant parameter for controlling and tailoring the code generation process.
EMF is failing to load a resource. How can I make it recognize a non-standard archive URI scheme? Why does EMF fail to load resources when running on an application server or other specialized runtime?
EMF recognizes a couple of well known archive schemes, such as "zip" and
"jar", so everything will work fine if the URI of an archived resource
starts, for example, with "zip:".Although most applications probably use
one of these recognized schemes, you may find that certain runtimes use a
different one.For example, when running in the IBM WebSphere Application
Server, Class.getResource(String) may return a URL with a "wsjar" scheme,
By default, EMF will not recognize this as an archive URI and will fail
to handle it correctly, probably resulting in multiple unregistered
resources errors and/or null pointer exceptions.
If you are facing this problem, you will need to change EMF's set of
recognized archive schemes. This is done by defining a property named
"org.eclipse.emf.common.util.URI.archiveSchemes", whose value is the
desired space-separated list of archive schemes.Here's an example of how
you could define it when invoking your Java application:
java MyApp -Dorg.eclipse.emf.common.util.URI.archiveSchemes="wsjar wszip jar zip"
Is there a built-in facility to check whether a given value is valid compared to the effective facets of its type?
To determine if a literal is valid with respect to a simple type, you can use either XSDSimpleTypeDefinition.isValidLiteral or XSDSimpleTypeDefinition.assess.
I have a simple model consisting of a root that contains a single EList of children.The child type contains several attributes.I would like to create a custom editor such that the model is completely displayed in a table. How should I start? Overload getText() on the child item provider, and just return null for a property descriptor?
Try working within the generated editor and updating the tab with existing table viewer support there until you have it working nicely. You might want a plain table or a table tree.You can add some more columns in the editor for the table/table tree and then use your item provider's implementation of ITableItemLabelProvider to populate the additional columns.Property descriptors will only be used when they are needed, so you don't have to do anything to hide them.
How big a job would it be to get the EMF editor generator to spit out Swing editor code instead of SWT/JFace code?
You'd want something similar to org.eclipse.emf.edit.ui, but for binding the platform independent .edit support to Swing instead of to Eclipse, and you'd want to replace the editor templates with stuff for Swing. It's not a trivial task, but not a huge one either.
Are there any examples of EMF used standalone?
Yes, definitely. In fact, SDO (Service Data Objects) is a standalone application of EMF. Javadoc, Download.
Is it possible to convert back from EMF model (ecore files or generated Java code?) to UML?
It's possible in theory, but we don't have anything like the working in practice.It shouldn't be too difficult to do the Ecore to UML2 conversion using Eclipse's EMF-based UML2 model.
Check the uml2 newsgroup. They may have plans or already have an Ecore model importer.
As of EMF 2.0.0.I20040408, it seems like the code templates in chapter 14.2.3 in the emf-book needs to be rewritten. Is this already done and published somewhere?
The existing mechanisms should continue to work, but will result in deprecation warnings for 2.0. The framework was generalized so that a number of places where only EReference was supported, now EStructuralFeature is supported. It would certainly be a FAQ worthy addition to outline the places where such changes would be made.
Can I link parts of UML diagrams to portions of the code in the EMF editor?
Yes, but the UML2 project should be able to provide you with most of the "model" code that you need, and the GEF project will give you a huge head-start when it comes to creating the "view" and "controller" bits.
I would guess that the best approach when it comes to linking your model and code would be via the JET framework which is part of EMF, this will handle most of the merging issues for you.
Is there an electronic version of the EMF book?
There's an IBM "RedBook" on GEF which also has some chapters on EMF in it, it's a free download at http://www.redbooks.ibm.com/redbooks/pdfs/sg246302.pdf. You can buy an electronic copy of the book here: http://www.awprofessional.com/titles/0131425420. It's also available on Safari Books Online (with subscription) at http://my.safaribooksonline.com/book/software-engineering-and-development/ide/9780321331885.
Is there a clean way to use an EMF model's generated editor in a standalone application?
The .edit projects can be used standalone (although you'd need to put
the plugin.properties and
icons into a resource jar), but the .editor projects are tightly
integrated Eclipse components
that will only function within an Eclipse environment.
For more information on working outside Eclipse, see the question "How do I use EMF in standalone applications (such as an ordinary main)?]".
I want to use EMF, SDO, or XSD in my standalone project, or include only a working subset of the code. What libraries (jar files) do I need in my CLASSPATH?
Eclipse Modeling Framework (EMF) provides the infrastructure to run the generated models and
dynamic model based on existing ecore files.
It also provides XMI/XML serialization and deserialization.
The following jars can be used in standalone mode. Jars are found under the plugins directory of your Eclipse installation, e.g. org.eclipse.emf.common_2.3.0.v200706262000.jar.
Add to the following jars to your CLASSPATH or copy them into your project. For EMF 2.3.0, this includes, but is not limited to:
- org.eclipse.emf.common_2.3.0.v200706262000.jar
- org.eclipse.emf.ecore_2.3.0.v200706262000.jar
- org.eclipse.emf.ecore.change_2.3.0.v200706262000.jar
- org.eclipse.emf.ecore.xmi_2.3.0.v200706262000.jar
Service Data Objects (SDO) is an API specification in the format of Java interfaces and the EMF implementation that requires the EMF jars above and the following jars to be used in standalone mode:
- org.eclipse.emf.commonj.sdo_2.3.0.v200706262000.jar
- org.eclipse.emf.ecore.sdo_2.3.0.v200706262000.jar
XML Schema Infoset Model (XSD) is a reference library for use with any code that manipulates XML schemas and requires the EMF jars above and the following jars to be used in standalone mode:
- org.eclipse.xsd_2.3.0.v200706262000.jar
For more information on working outside Eclipse, see the question How do I use EMF in standalone applications (such as an ordinary main)?. See also Standalone Zip removed in EMF 2.3. For EMF 2.1 standalone, see the archives.
Does it matter what node in the genmodel tree I invoke Generate from?
Definitely. To do a full generation, you need to invoke "Generate" or "Generate EMF.Edit" from the root node in the genmodel editor. If you invoke Generate lower down, you'll only generate the files associated with the selected subtree.
Can model classes be in the Java default package?
No. EMF does not allow model classes to be in the default Java package because it would need to be handled specially in the code generator, and since it's not a good Java convention anyway, we don't think it is worth supporting. Make sure that if you load your model from annotated Java that all the interfaces and classes with an @model tag also have an explicit package declaration.
Can annotated Java files use * imports?
Currently no. Until our Java name lookup mechanisms are improved, we really rely on explicit imports to resolve names, i.e., two * imports would confuse the code. It's best to entirely avoid * imports for the time being. We will improve identifier lookup in the coming weeks.
Does regeneration/merge work for properties and plugin.xml files?
Not yet. The current generator does not support merge for the plugin.properties and plugin.xml files, so it will not overwrite them if they exist. If you want to regenerate them, you'll need to remove or rename them before regenerating. This will also be improved in the future.
How do I use EMF in standalone applications (such as an ordinary main)?
An EMF model can be used without change in a standalone application with couple of exceptions.
Default resource factories are not registered in the standalone EMF environment. Therefore, for each file extension or scheme your application wants to load or save, you need to register the corresponding resource factory. For example, to load and save XMI documents, add a line similar to the one below to your main program:
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("library", new XMIResourceFactoryImpl());
To load and save XML documents, register the following factory:
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("xml", new XMLResourceFactoryImpl());
In the above examples, the model is registered using the global static resource factory registry instance. You can also register factories local to the ResourceSet being used, e.g:
ResourceSet rs = new ResourceSetImpl(); rs.getResourceFactoryRegistry().getExtensionToFactoryMap().put("xml", new XMLResourceFactoryImpl());
In addition, you'll also need to register your package, which happens as a side effect of accessing XyzPackage.eINSTANCE. For example, to register the library model, add the following line to your main program:
You need to add to the CLASSPATH all the jars for the plugins (and their dependent plugins) that you want to use standalone. The list is dependent on exactly what plugins you want to use and is available by looking at the runtime libraries in their plugin.xml files. This includes, but is not limited to:
- org.eclipse.emf.common_2.3.0.v200706262000.jar
- org.eclipse.emf.ecore_2.3.0.v200706262000.jar
- org.eclipse.emf.ecore.xmi_2.3.0.v200706262000.jar
The jars are found under the plugins directory of your Eclipse installation. There will be a release number appended to the plugin name, e.g. org.eclipse.emf.common_2.3.0.v200706262000.
For EMF.Edit you would also have to add the following jar files to your classpath:
- org.eclipse.emf.common.ui_2.3.0.v200706262000.jar
- org.eclipse.emf.edit_2.3.0.v200706262000.jar
See also EMF/FAQ#I want to use EMF, SDO, or XSD in my standalone project, or include only a working subset of the code. What libraries (jar files) do I need in my CLASSPATH? and Standalone Zip removed in EMF 2.3. For EMF 2.1 standalone, see the archives.
How do I make my EMF standalone application Eclipse-aware?
An EMF standalone application may make use of some useful Eclipse facilities.
EcorePlugin.ExtensionProcessor.process(null) may be invoked to analyze the plugin.xml files on the application's classpath and populate EMF registries from EMF extension points in the same way that they would be if EMF had started under OSGI. This can avoid the need for manual initialization of extension to ResourceFactory mappings and registration of known EPackages.
A resourceSet may be initialized by
to install mappings from platform:/resource/xxx to platform:/plugin/xxx to file:/location/of/xxx. This allows a user file to be opened as
resourceSet.getResource(URI.createPlatformResourceURI("xxx/model/XXX.ecore"), true));
It is not necessary to know where project xxx is. Relative (../..) navigation between platform: scheme files then works in the same way as within Eclipse even though the multiple projects may not all be at similar filesystem locations.
How do I use EMF in a minimal OSGi application?
To use EMF in a minimal OSGi application that does not contain org.eclipse.core.runtime, you need to set the system property org.eclipse.emf.ecore.EPackage.Registry.INSTANCE to avoid classloading issues.
The reason behind this is that without org.eclipse.core.runtime activated in the runtime, EMF considers the runtime to be a standalone application. In this scenario it uses a classloader aware registry. This way loading a model can result in a PackageNotFoundException, although the initialization was processed without errors. By setting the system property the EPackageRegistryImpl is used, which is also the default in cases where org.eclipse.core.runtime is available.
I get a PackageNotFoundException: e.g., "Package with uri 'http://com.example.company.ecore' not found." What do I need to do?
When an EMF model instance (or SDO data graph) is loaded from its serialized form, the resource needs to obtain the correct metamodel, which is to be instantiated. The metamodel, represented by EMF as an EPackage, must be available (either in memory, or in serialized form), and EMF must be able to locate it from its namespace URI, which appears in the serialized model instance.
There are number of different ways this can occur, depending on a number of factors:
- Static or dynamic: static means code has been generated at development time to implement the model; dynamic means no code has been generated and the metamodel is built in memory.
- Eclipse or standalone: you may be running your code under or outside of Eclipse. The latter is referred to as standalone.
- EMF or SDO: you may be using non-SDO EMF, or SDO.
When using static SDO standalone, it is recommended to follow the instructions described under "Do I have to pre-register my static, generated package when running standalone (outside of Eclipse)?"
If you are using static EMF, the generated package interface (e.g. CompanyPackage) will include a static field called eINSTANCE. Accessing this field will cause the package to be initialized and registered in the global package registry, allowing any resource to locate it. For example, the following code accesses the eINSTANCE field of CompanyPackage:
CompanyPackage packageInstance = CompanyPackage.eINSTANCE;
When running under Eclipse, this step is unnecessary, as a plug-in manifest file drives automatic package registration.
In SDO, the package can be included in the serialized data graph, along with the instance data that requires it. This is one option with dynamic, for example. To do so, refer to "How do I serialize the model of an SDO data graph?"
To register a dynamic model, refer to "How do I register a dynamic package?" Alternatively, the metamodel can be automatically loaded from its serialized form. For details, refer to "Do I have to initialize and pre-register my dynamic packages?"
I get a DanglingHREFException: e.g., "org.eclipse.emf.ecore.xmi.DanglingHREFException: The object 'com.example.Foo@2f5dda ()' is not contained in a resource." What do I need to do?
All objects need to be contained by a resource in order to be serialized. That implies that for EObject x to be serialized, it must be the case that x.eResource() != null. The resource will be non-null if either x is directly contained by a resource, i.e., if for Resource r, r.getContents().contains(x), or if x has a container that in turn is contained by a resource, i.e., if for Resource r, r.getContents().contains(x.eContainer()). This definition is recursive. So an object must be contained by a resource directly, or indirectly by virtue of being part of a containment reference where, recursively, the container too must be contained by a resource.
So if you get the above exception, that means you have some object x contained by a resource r that refers to another object y, that is not directly or indirectly contained by any resource. It's possible to make the EReference feature used by x to refer to y be transient, so that it's not saved at all, or to make it a containment reference, so that y is contained by the same resource as x, but barring changes to the Ecore model itself, the one and only way to solve this problem is to add y to some resource, i.e., r.getContents().add(y), or to add/set it to some containment reference of an object z, i.e., z.getYs().add(y), where z is already contained by a resource, i.e., z.eResource() != null.
Do I have to pre-register my static, generated package when running standalone (outside of Eclipse)?
No. Use the OPTION_SCHEMA_LOCATION_IMPLEMENTATION option to avoid pre-registration of your generated packages. This is the recommended approach to using static SDO.
When a model instance is saved with this option set, an xsi:schemaLocation attribute will be added to the document element, associating the package's namespace URI with the qualified name of the generated package interface. When the package is needed at load-time, the eINSTANCE field of that interface will be reflectively accessed to obtain it.
The following code shows how to set the option in the resource associated with an SDO data graph:
((XMLResource)eDataGraph.getDataGraphResource()).getDefaultSaveOptions() .put(XMLResource.OPTION_SCHEMA_LOCATION_IMPLEMENTATION, Boolean.TRUE);
How do I register a dynamic package?
In order for EMF to locate a dynamic package that has been built up programmatically, it must be registered in a package registry. For example, the following code globally registers companyPackage:
EPackage.Registry.INSTANCE.put(companyPackage.getNsURI(), companyPackage);
Each resource set has its own local package registry, which is consulted before the global registry. To avoid collisions, you may prefer to register the dynamic package locally, instead of globally:
ResourceSet set = new ResourceSetImpl(); set.getPackageRegistry().put(companyPackage.getNsURI(), companyPackage);
Do I have to initialize and pre-register my dynamic packages?
No. The package needed to load a model instance will be automatically loaded from its serialized form, if available.
The simplest approach is to use an accessible URL as the package's namespace URI, and to make the package serialization available at that location (for example, via HTTP). If found, the package will be loaded with no additional effort.
If the package is available at a different physical location, whether public or on the local filesystem, you can serialize the model instance with the OPTION_SCHEMA_LOCATION to include that location, so that it can be found at load-time.
First, create a resource and add your package to it. For example:
ResourceSet set = new ResourceSetImpl(); Resource packageResource = set.createResource(URI.createURI("file:///c:/data/company.ecore")); packageResource.getContents().add(companyPackage); packageResource.save(null);
Then, use the OPTION_SCHEMA_LOCATION when you serialize your model instance:
Resource resource = set.createResource(URI.createURI("file:///c:/data/company.xml")); Resource.getContents.add(company); Map options = new HashMap(); options.put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE); resource.save(options);
This adds an xsi:schemaLocation attribute to company.xml, associating the company package's namespace URI with the physical URI "company.ecore" (this relative URI is automatically computed, allowing the two files to be relocated, together).
How can I ensure that an xsi:schemaLocation is serialized for my packages?
The save option XMLResource.OPTION_SCHEMA_LOCATION must be used to indicate that you want to serialize schema location information. Even when this option is used, the schema location is serialized only if the ePackage.getNsURI() is different from ePackage.eResource().getURI() to avoid useless schema locations of the form xsi:schemaLocation="http://www.example.org/Xyz http://www.example.org/Xyz". For a generated package, the initializePackageContents contains this:
// Create resource createResource(eNS_URI);
Adding a method like this:
@Override protected Resource createResource(String uri) { return super.createResource("http://www.example.org/Xyz.ecore"); }
is a good way to specify a physical location of the schema. It's best to specify an absolute URI as the location. EMF will serialize a relative location if there is a relative path from the URI of document being serialized to the schema location itself.
See also: Saving the xsi:schemaLocation into EMF XMI file - Eclipse Driven Rich Application Development Blog
Is there a built-in facility to check whether a given value is valid compared to the effective facets of its type?
To determine if a literal is valid with respect to a simple type, you can use
either XSDSimpleTypeDefinition.isValidLiteral
I'm generating EMF models from xsd files. To generate relations between entities I use the following syntax, with the ecore:reference attribute on xsd:element...
<xsd:complexType name="Writer"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element maxOccurs="unbounded" minOccurs="0" name="books" type="xsd:anyURI" ecore:reference="lib:Book"/> </xsd:sequence> </xsd:complexType>
... but I have to generate this XSD schema and for this I need the schema that defines the ecore namespace. Where can I find this schema?
I don't think you actually need it in order to generate a schema like the one below.The XML Schema spec defines the wildcard for these "non-schema namespace attributes" like this:
<xs:anyAttribute namespace="##other" processContents="lax"/>
so no schema needs to exist for that namespace in order for the schema to be valid, you only need to ensure that the prefix is defined.
I have an element that comprises four sub-elements derived from type <xs:string>. How can I examine the contents of an <xs:complexType>? How could I programmatically determine its restrictions/enumerations/etc.?
Here's snippet of code that does some of the things you mention:
void handle(XSDElementDeclaration xsdElementDeclaration) { XSDTypeDefinition xsdTypeDefinition = xsdElementDeclaration.getTypeDefinition(); if (xsdTypeDefinition instanceof XSDSimpleTypeDefinition) { XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)xsdTypeDefinition; for (XSDFacet xsdFacet : xsdSimpleTypeDefinition.getFacets()) { if (xsdFacet instanceof XSDEnumerationFacet) { for (Object enumerator : ((XSDEnumerationFacet)xsdFacet).getValue()) { } } else if (xsdFacet instanceof XSDPatternFacet) { } // ... } } else { XSDComplexTypeDefinition xsdComplexTypeDefinition = (XSDComplexTypeDefinition)xsdTypeDefinition; switch (xsdComplexTypeDefinition.getContentTypeCategory().getValue()) { case XSDContentTypeCategory.EMPTY: { break; } case XSDContentTypeCategory.SIMPLE: { XSDSimpleTypeDefinition xsdSimpleTypeDefinition = (XSDSimpleTypeDefinition)xsdComplexTypeDefinition.getContentType(); break; } case XSDContentTypeCategory.ELEMENT_ONLY: case XSDContentTypeCategory.MIXED: { XSDParticle xsdParticle = (XSDParticle)xsdComplexTypeDefinition.getContentType(); XSDTerm xsdTerm = xsdParticle.getTerm(); if (xsdTerm instanceof XSDModelGroup) { XSDModelGroup xsdModelGroup = (XSDModelGroup)xsdTerm; for (XSDParticle childXSDParticle : xsdModelGroup.getParticles()) { } } else if (xsdTerm instanceof XSDElementDeclaration) { } else if (xsdTerm instanceof XSDWildcard) { } break; } } } }
How does setIncrementalUpdate() work?
You can use XSDSchema.setIncrementalUpdate(false) to turn off the expensive global updates and set it back to true, or call XSDSchema.update(), afterwards. Calling update() does not cause setIncrementalUpdate(true). Attached to this state is the warning that names will no longer be re-resolved and non-concrete relations will no longer be recomputed.If you aren't relying on these to drive your actions, it won't matter.
How can I load a XSDSchema from a simple Java String or from a DOM Tree?
Assuming you do something much like what's in XSDMainTest in org.eclipse.xsd.test, this should do the trick:
ResourceSet resourceSet = new ResourceSetImpl(); XSDResourceImpl xsdMainResource = (XSDResourceImpl)resourceSet.createResource(URI.createURI("*.xsd")); xsdMainResource.setURI(uri); if (fromString) { xsdMainResource.load(/* ByteArrayInputStream created from String */, resourceSet.getLoadOptions()); } else { XSDSchema xsdSchema = XSDPackage.eINSTANCE.createXSDSchema(); xsdSdchema.setElement(/* your <schema> element */); xsdMainResource.getContents().add(xsdSchema); }
How do I convert code that runs in an Eclipse environment to a standalone environment?
In an Eclipse environment the EPackage.Registry.INSTANCE is populated at startup time by the registrations of the models in the plugin.xml, e.g.,
<extension point="org.eclipse.emf.ecore.generated_package"> <package uri = "http://www.eclipse.org/xsd/2002/XSD" class = "org.eclipse.xsd.XSDPackage" /> </extension>
But in a standalone environment, this doesn't happen, so you need to
register each package explicitly.
If you have a package Xyz, accessing XyzPackage.eINSTANCE will create the
package and register it in the registry.
So if you add the line XyzPackage.eINSTANCE.getEFactoryInstance() to your
initialization code, the Xyz package will be properly registered.
How do I create a Map in EMF?
An EMap is basically a List of java.util.Map$Entry instances. Therefore to create a Map you need to first model your map entry by following these steps:
- Create an EClass with the name [Type1]To[Type2]Map where [Type1] represents the key's type and the [Type2] represents the value's type.
- Set the Instance Class Name property of the newly created EClass to java.util.Map$Entry.
- Create an EAttribute or EReference named "key" and set the EDataType or EClass for it.
- Create an EAttribute or EReference called "value" and set the EDataType or EClass for it.
Now, when you create an EReference somewhere that uses this map entry class as its EClass, the EMF code generator will detect this special case and generate a properly typed EMap getter/setter for you instead of a normal EList getter/setter. For example, in any EClass where you would like to have a map using the map entry type you defined above, do the following:
- Create an EReference with its EClass set to be the map-entry class you created above.
- Set the Containment property of your EReference to be true.
- Set the upper-bound of your EReference to be -1 (unbounded).
Generate the code and see your map work.
A similar approach works with XML Schema. You need to make the ecore:instanceClass of the <complexType> be java.util.Map$Entry and you need to ensure that there is a feature called "key" and a feature called "value". If the complex type does not contain an element or attribute with these names, an ecore:name annotation can be used to give an element or attribute an Ecore name different from the one that will be used to read and write the XML instance. Here's an example that assumes that the ecore prefix is defined as xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore":
<xsd:complexType ecore:instanceClass="java.util.Map$Entry" name="StringToStringMapEntry"> <xsd:attribute name="source" ecore:name="key" type="xsd:string"/> <xsd:attribute name="target" ecore:name="value" type="xsd:string"/> </xsd:complexType>
With help from Marco and Malai!
In Annotated Java, some care must be taken to have a Map being modeled equivalent to the above, i.e., an EReference to an (automatically generated) [Type1]To[Type2]MapEntry class:
/** * @model keyType="java.lang.String" valueType="java.lang.String" */ Map<String, String> getScoScoMap();
Omitting the keyType and valueType annotations would result in the Map being modeled as an EAttribute, which would get serialized in XML as a hex value using Java serialization, unless you specialize the createFromString and convertToString methods for the map EDataType. In the above correct example, the type information in the annotations and Java type parameters is redundant; generally one would specify a reference to the exact EDataType rather than just repeating the Java type information, i.e., org.eclipse.emf.ecore.EString or org.eclipse.emf.ecore.xml.type.String. The desired result in the Ecore model looks like this:
<eStructuralFeatures xsi:type="ecore:EReference" name="scoScoMap" upperBound="-1" eType="#//EStringToEStringMapEntry" containment="true" resolveProxies="false"/>
The above could also be specified using this approach of explicitly referring to the map entry EClass:
/** * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" */ Map<String, String> getScoScoMap();
For completeness, another form is supported:
/** * @model kind="reference" */ Map<String, String> getScoScoMapNoTypeAnnotations();
This results in:
<eStructuralFeatures xsi:type="ecore:EReference" name="scoScoMapNoTypeAnnotations"> <eGenericType eClassifier="#//Map"> <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> </eGenericType> </eStructuralFeatures>
So, for best results, it is recommended to use keyType and valueType annotations or a mapType annotation for Maps in annotated Java code.
See also: http://tweakeclipse.blogspot.com/2009/02/create-maps-in-emf-other-way.html
What are Dynamic Templates?
Dynamic Templates allow overriding of the built-in EMF templates. They are called "dynamic" because the code generators are dynamically created from the templates. The built-in templates are considered "static" as the code generators were already generated when EMF shipped.
How do I use Dynamic Templates?
- Open the EMF Generator editor on a .genmodel file
- Right click in the editor and select Show Properties View
- Under Templates & Merge do the following:
- Change Dynamic Templates to true
- Optionally change Force Overwrite to true
- Set Template Directory to the new templates directory, e.g. <project name>/templates
- Now you can selectively override the built-in templates by copying the templates from plugins/org.eclipse.emf.codegen.ecore_<version>.jar/templates. Make sure you keep the same template folder structure.
- If you want to include a dynamic template in Class.javajet like <%@ include file="Class/interface.javadoc.override.javajetinc" %> then place your interface.javadoc.override.javajetinc in <project name>/templates/model/Class/
How can I easily listen to changes for a specific object?
Given eObject of type EObject you can listen to its changes like this:
eObject.eAdapters().add (new AdapterImpl() { @Override public void notifyChanged(Notification msg) { // Look at notification to see what's changed. } });
Any modeled object can be cast to EObject, even if it doesn't extend EObject in its generated interface. Keep in mind that you will often need to clean up these adapters, i.e., remove them from the eAdapters() list, when they are no longer needed, i.e., when the view that adds them is disposed.
How can I retrieve an object and all of the objects it references(regardless of the kind of reference) and save them as a single resource?
these methods show one way of doing that. this is, for instance, especially useful when creating a client-server architecture, where objects can be stored and edited on the client- as well as the server-side. The created resource can easily be serialized as a string, f.e. for transmission via XMLRPC.
- [method for loading all referenced objects from the filesystem]
- this method takes a resource as param and locates all references for all objects in it.
public Resource collectAll(Resource resource){ //get the resourceset ResourceSet resourceSet = resource.getResourceSet(); //search for other resources containing referenced objects List<Resource> resources = new ArrayList<Resource>(); resources.add(resource); for(Resource r : resources){ for(Iterator<EObject> j = r.getAllContents(); j.hasNext(); ){ for(Object object : j.next().eCrossReferences()){ EObject eObject = (EObject)object; Resource otherResource = eObject.eResource(); if(otherResource != null && !resources.contains(otherResource)){ resources.add(otherResource); } } } } //create resource to hold all objects //replace .lobj with your own model extension! File tempFile = new File("completeTree.lobj"); Resource complete_resource = resourceSet.createResource(URI.createFileURI(tempFile.getAbsolutePath())); //move all objects into one resource Collection cl = new ArrayList(); for(Resource resource2 : resources){ cl.addAll(resource2.getContents()); } complete_resource.getContents().addAll(EcoreUtil.copyAll(cl)); return complete_resource; }
- [method for loading all referenced objects from a datastore, using teneo]
- the below method(readReferences) does not work for featuremaps and map.
- don't use this when selecting via a HibernateResource(or other types of db-resources supported by teneo), use queries to select your object.
//create session and transaction Session session = getSession(); Transaction tx = session.getTransaction(); //Create a resourceset and a resource to hold the loaded objects //always use an absolute path as uri, so relative paths can be built //from it when moving objects around between resources ResourceSet resourceSet = getResourceSet(); //replace .lobj with your own model extension! File tempFile = new File("completeTree.lobj"); Resource rs = resourceSet.createResource(URI.createFileURI(tempFile.getAbsolutePath())); tx.begin(); // query for object by ID Query qry = session.createQuery("from "+eclassname+" where id='"+id+"'"); List list = qry.list(); tx.commit(); //fetch object and add it to the resource EObject myObj = (EObject)list.get(0); rs.getContents().add(myObj); HashSet<EObject> preventCycles = new HashSet<EObject>(); ArrayList<EObject> rootList = new ArrayList<EObject>(); //collect all referenced & proxied objects readReferences(myObj, preventCycles, rootList); //add the collected referenced objects to the resource rs.getContents().addAll(rootList);
/** * Recursively read all objects which are referenced from the passed eobject. * The objects which do not have an econtainer are added to the rootList. * The resulting rootList can be added to the contents of a resource. */ private void readReferences(EObject eobject, HashSet<EObject> preventCycles, List<EObject> rootList) { if(preventCycles.contains(eobject)){ // been here get away return; } preventCycles.add(eobject); if(eobject.eContainer() != null){ readReferences(eobject.eContainer(), preventCycles, rootList); }else{ // a root object rootList.add(eobject); } for(Object erefObj : eobject.eClass().getEAllReferences()){ EReference eref = (EReference)erefObj; final Object value = eobject.eGet(eref); if (value == null) { continue; } if(value instanceof List){ for(Object obj : (List<?>)value){ readReferences((EObject)obj, preventCycles, rootList); } }else{ // an eobject readReferences((EObject)value, preventCycles, rootList); } } }
How do I serialize a resource to a String instead of a file?
public static String resourceToString(Resource rs, String encoding){ Map options = new HashMap(); //change as needed according to the type of resource //you are using options.put(XMIResource.OPTION_ENCODING, "UTF-8"); StringWriter sw = new StringWriter(); URIConverter.WriteableOutputStream uws = new URIConverter.WriteableOutputStream(sw, encoding); try{ rs.save(uws, options); }catch(IOException e){ //TODO handle exception } String resourceString = sw.toString(); return resourceString; }
What EList implementation is generated When ?? - List of basic EList Implementations
I am documenting the most commonly generated list of EList that you may find in your EMF generated model code along with the condition under which it would be generated.
Types of Elist | When will it be generated |
EDataTypeEList | If you define a Attribute with multiplicity more than 1 |
EDataTypeUniqueEList | If you define a Attribute with multiplicity more than 1 and set UNIQUE = true |
EObjectResolvingEList | If you have an Ereference with multiplicity more than 1 defined with ResolveProxies = true |
EObjectEList | If you have an Ereference with multiplicity more than 1 defined |
EObjectWithInverseResolvingEList | If you have an Eopposite set for this Ereference with 0..* and resolveProxies = true |
EObjectWithInverseEList | If you have an Eopposite set for this Ereference with 0..* and resolveProxies = false |
EObjectContainmentEList | If your reference is a Containment |
These are some of the frequently generated EList types, there are definitely more. Please do add them to this list if you find out more.
What's the difference between the methods useIDs and useUUIDs in an XMLResourceImpl?
If useIDs returns true then the resource will maintain a map of extrinsic IDs, i.e., IDs that are not modeled directly as an EAttribute with isID true on the EObject, which we call intrinsic IDs. Extrinsic IDs are set via XMLResource.setID and fetched via XMLResource.getID. There are two-way maps to maintain them and these which are kept up-to-date if the object is removed from the resource. When useUUIDs is also true, it's assumed that the extrinsic IDs are universally unique (not just unique to the resource). In that case, a UUID is generated (EcoreUtil.generateUUID) for any object attached to the resource and this UUID is preserved when the object is moved between resources.
How can I use the EMF Ant tasks?
EMF provides a few Ant tasks that you can use in your build. The tasks are listed below, together with a short description and the CVS links to their readme file and example directory. Clicking on the name of a task opens the Javadoc of the class that implements it.
- JET and JMerger tasks
- Description: Exposes some functionalities available on the JETCompiler class.
- readme
- example
- Description: Exposes some functionalities available on the JETEmitter class.
- readme
- example
- emf.JETMerger
- Generator tasks (used to create Ecore and Genmodel files, and to generate code)
- Description: Generates source code from models specified in Ecore files. Exposes the functionalities available on the EcoreImporterApplication class.
- readme
- example
- Description: Generates source code from models specified using Annotated Java. Exposes the functionalities available on the JavaImporterApplication class.
- readme
- example
- Description: Generates source code from models specified in Rose files. Exposes the functionalities available on the RoseImporterApplication class.
- readme
- example
- Description: Generates source code from models specified in XML Schema files. Exposes the functionalities available on the XSDImporterApplication class.
- readme
- example
- contributed documents:
EasyWay by Jason Henriksen
- Tips:
- The Generator tasks support all the attributes of the corresponding Eclipse application either directly (via Ant attributes) or indirectly (via Ant's <arg> element). For example, the following snippet shows how use the "-editProject" argument of EcoreImporterApplication with the emf.Ecore2Java task:
<emf.Ecore2Java model="c:/lib/model/lib.ecore" genModel="c:/lib/emf/lib.genmodel" modelProject="c:/lib" modelProjectFragmentPath="src"> <arg line="-editProject result.edit src"/> </emf.Ecore2Java>
- The Generator tasks support all the attributes of the corresponding Eclipse application either directly (via Ant attributes) or indirectly (via Ant's <arg> element). For example, the following snippet shows how use the "-editProject" argument of EcoreImporterApplication with the emf.Ecore2Java task:
How can I split containment references across multiple resources to support cross resource containment?
Normally if you add a contained child to the contents of a resource, it will be removed from its container, i.e., EObject.eContainer() will become null. Since EMF 2.2, support was added so that if a containment reference is proxy resolving (EReference.isResolveProxies() is true), an object can be added to the contents of a resource without removing it from its container's proxy resolving reference. For this setting of the Ecore model to be respected by the generator, you must set the GenModel's "Containment Proxies" property to true.
The Ecore model itself has examples of this, i.e., EPackage.getEClassifiers() is proxy resolving so you can store an EClass is a separate resource from its containing EPackage. As a result, you can right click on an EClass and invoke "Control..." to specify a new resource in which to store the EClass. The "Control..." action is available in the generated editors for any object that is contained by a proxy resolving containment reference.
Is EMF thread-safe?
EMF can safely be used in multi-threaded environments; however, EMF does not, itself, ensure thread-safety in application model implementations. Data structures are unsynchronized, for performance and to avoid potential deadlock situations. The expectation is that a complete instance of the model (including resources and resource set, if present) should only be accessed by one thread at a time, and that the synchronization should be provided by the application at a higher level.
Since it is shared among multiple instances of a given application model, Ecore metadata is intended to be thread-safe for read-only access. However, there was a thread safety bug involving Ecore annotations, which is now fixed but will still affect older releases of EMF. Also, the demand initialization of SDO metadata is not thread-safe. See the following two questions for workarounds to these issues.
I get a NullPointerException from BasicEMap.entryForKey() while loading in a multi-threaded application. What's the problem?
This is a known bug involving access to Ecore metadata from multiple threads. The details map in an annotation on your model (probably an extended metadata annotation on a model originally defined as an XML Schema) is lazily initializing an index as a side-effect of being accessed for the first time. This is not thread-safe.
The problem was originally fixed in EMF 2.2 (bug 131151) and later backported to 2.0.6 and 2.1.3. If you are encountering this problem in an earlier release of EMF 2.0 or 2.1, you should move up to the latest release in the stream to pick up the fix.
Failing that, there is a workaround: you can simply ensure that you access the details map on each annotation in your model before the multiple loads start occuring. This can be done with a simple method like this:
public static void fixExtendedMetaData(EPackage ePackage)
for (Iterator i = ePackage.eAllContents(); i.hasNext(); )
Object o = i.next();
if (o instanceof EAnnotation)
If possible, you should add this directly into the generated init() method in the implementation class for each affected package. For example, for package foo, in FooPackageImpl:
* @generated NOT
public static FooPackage init()
// Initialize created meta-data
// Add this (for each package above, if there are package interdependencies)
return theFooPackage;
If you don't have control over the generated model implementations yourself, you will simply need to obtain each ePackage (from the package registry, for instance) and invoke fixExtendedMetaData() on it at some point before the multi-threaded access begins.
I get a NullPointerException from EcoreUtil.getAdapter() while using SDO in a multi-threaded application. What's the problem?
This is a known limitation in EMF's implementation of SDO, which makes SDO model elements adapters on the corresponding Ecore model elements, so as to be easily retrievable. The attachment of the adapters is not thread-safe. So, when SDOUtil.adaptType() or SDOUtil.adaptProperty() is called to obtain a Type or Property for a given EClass or EStructuralFeature, it can run into trouble trying to get an adapter from the non-thread-safe adapter list.
This problem has not been fixed and probably won't be. However, there is a workaround: you can pre-initialize the SDO metadata before the multi-threaded access begins. Here is a method that does this:
public static void fixSDOMetaData(EPackage ePackage)
for (Iterator i = ePackage.eAllContents(); i.hasNext(); )
Object o = i.next();
if (o instanceof EClassifier)
else if (o instanceof EStructuralFeature)
Like the workaround described in the previous answer, this should be done either from the generated init() method in the implementation class for each affected package or, failing that, at some other point before the multi-threaded access begins. Of course, if you are affected by both problems, you can fix them both in a single pass.
How do I preserve my property order, i. e. the order in the ecore model, in Property Sheet of the generated editor instead of default alphabetical ordering?
In your generated editor (MyEditor) find the method getPropertySheetPage() and replace it with the following piece of code:
private class MyExtendedPropertySheetPage extends
ExtendedPropertySheetPage {
private class MyPropertySheetSorter extends PropertySheetSorter {
public void sort(IPropertySheetEntry[] entries) {
// do nothing;
public MyExtendedPropertySheetPage(
AdapterFactoryEditingDomain editingDomain) {
setSorter(new MyPropertySheetSorter());
public void setSelectionToViewer(List<?> selection) {
public void setActionBars(IActionBars actionBars) {
getActionBarContributor().shareGlobalActions(this, actionBars);
protected void setSorter(PropertySheetSorter sorter) {
if (!(sorter instanceof MyPropertySheetSorter))
sorter = new MyPropertySheetSorter();
public IPropertySheetPage getPropertySheetPage() {
if (propertySheetPage == null) {
propertySheetPage = new MyExtendedPropertySheetPage(
.setPropertySourceProvider(new AdapterFactoryContentProvider(
return propertySheetPage;
Platform URI Scheme
In this blog entry, I've described the applications of URIs with the "platform" scheme and suggested a few ideas of how they can be used in an application. This knowledge is usually important while developing EMF applications due to the intensive use of URIs by the framework.
How do I map between an EMF Resource and an Eclipse IFile?
EMF uses platform resource URIs to access the workspace
Be sure to encode the path when creating a URI for it, i.e., URI.createPlatformResourceURI(iFile.getFullPath().toString(), true). Use workspaceRoot.getFile(new Path(uri.toPlatformResourceString(true))) to convert it back to an IFile.
How do I update my Ecore and GenModel after the originating model has changed?
Once you have an existing *.genmodel resource, you can right click on it to bring up the popup, or open it the editor and from the Generator main menubar item, invoke "Reload..." to walk through the same wizard steps that were used to create the *.genmodel in the first place. The wizard will remember the choices made the last time and your GenModel's properties will be preserved during the reload processing.
How can I control which instances are available as choices when editing a property in the properties view?
You can modify the generated item provider from this
* This adds a property descriptor for the Foo feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
protected void addFooPropertyDescriptor(Object object)
getString("_UI_PropertyDescriptor_description", "_UI_Abc_foo_feature", "_UI_Abc_type"),
to this
* This adds a property descriptor for the Foo feature.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated NOT
protected void addFooPropertyDescriptor(Object object)
(new ItemPropertyDescriptor
getString("_UI_PropertyDescriptor_description", "_UI_Abc_foo_feature", "_UI_Abc_type"),
public Collection<?> getChoiceOfValues(Object object)
List<Object> choiceOfValues = new ArrayList<Object>(super.getChoiceOfValues(object));
// Filter the choices before returning them.
return choiceOfValues;
I have a whole bunch of generator models. How can I generate many models at once?
Alt-Shift-G brings up a wizard that lets you choose which models in your workspace you want to generate and to control which projects to generate from them.
How to get a EMF Ecore model into a Papyrus class diagram
Scope: The below steps assume that the Eclipse Modeling Framework (EMF) plug-ins and Papyrus plug-ins are installed in Eclipse. This wiki page and screen captures are based on Eclipse Juno 4.4.1, EMF 2.9.0, UML2 5.0.2 and Papyrus 1.0.2. How to get a EMF Ecore model into a Papyrus class diagram
Downloading EMF
How do I install EMF 2.x (for Eclipse 3.x)?
Download the version of EMF, SDO and/or XSD that matches your installation of Eclipse. Generally, the version of Eclipse is one version greater than that of EMF; eg., EMF 2.3 is build against (and for) Eclipse 3.3. Exit Eclipse, then unzip into your Eclipse directory.
How do I install EMF or XSD 1.x for Eclipse 2.x?
Download the version of EMF and/or XSD that matches your installation of Eclipse. Exit Eclipse, then unzip into your Eclipse directory.
How do I get EMF, SDO or XSD source from CVS?
See Getting EMF Source.
Does EMF, SDO or XSD have a site that I can use with the Eclipse Update Manager?
Yes, as of June 21, 2004, there is an Update Manager site for EMF, SDO, and XSD.
This is only for the 2.x+ stream, not the 1.1.x stream.
IBM Internal can use:
- http://fullmoon.torolab.ibm.com/modeling/emf/updates/ or http://emf.torolab.ibm.com/modeling/emf/updates/
The rest of the world can use:
If you're not familiar with Update Manager, surf to one of the above URLs and read the instructions there.
Please note, however:
- You cannot upgrade from EMF 2.x to EMF 2.y, since you must also upgrade versions of Eclipse (3.x -> 3.y).
- EMF's update site moved from
, so old versions (2.0.x, 2.1.x) may not update properly anymore. Here are three workarounds:- Update using ' search for new' instead of 'search for updates'
- Install from the zip
- Use a policy file to force Eclipse to use the new URL
Modeling Standards
What is Model Driven Architecture (MDA)?
MDA is an industry architecture proposed by the OMG that addresses full life cycle application development, data, and application integration standards that work with multiple middleware (CORBA, J2EE), languages, and interchange formats. MDA unifies some of the industry best practices in software architecture, modeling, metadata management, and software transformation technologies that allow a user to develop a modeling specification once and target multiple technology implementations by using precise transformations/mappings.
An example of the use of MDA is to use a UML model representation of a tool or application and to use this model to automate (some or all) of the Java interface, implementation, as well as any XML serialization for the modeled objects. Many of the recent OMG standards such as UML, MOF, and CWM were developed using MDA principles of using abstract models (these are also referred to as Platform Independent Models - PIM) which can be mapped to Platform Specific Models (PSM). Please note that 'platform independent' is a relative term!
or more information on MDA and related MDA specifications including UML, XMI, and MOF, please visit www.omg.org/mda.
Does EMF support OMG XMI?
EMF uses OMG XML Metadata Interchange (XMITM) 2.0 as the default XML serialization format for Ecore models and Ecore instances. The EMF framework allows the use of other serialization formats also. The XMI 2.0 document production rules are used because of more compact representation than XMI 1.2.
Can I create an EMF model using OMG XMI?
Yes. The XMI document that conforms to the EMF Ecore model can be directly edited using your favorite text or an XML editor. Alternately you can use a modeling tool that can produce the XMI document from a UML model. You can also use annotated Java interfaces to define your input model.
Can I create an EMF model using UMLTM modeling tools?
EMF models can be defined using UML modeling tools such as Rational Rose. You simply define a class model with the packages, attributes, references, data types, and operations. This class model can be imported into EMF for additional code generation. Since many Java developers are familiar with simple class modeling, this serves as a 'gentle introduction' to UML class modeling. In addition to UML class models, EMF models can be created by using annotated Java interfaces or by directly editing an XMI document using an XML editor. This approach is used to allow the benefits of model based code generation (one of the principles of the OMG Model Driven Architecture - MDA) to not just users familiar with UML, but also the larger community of developers using Java and XML.
What is the relationship of OMGTM MOFTM to the EMF Ecore model?
The OMG MOF 1.4 Model has influenced the design of the EMF Ecore model. The Ecore model evolved in parallel with the MOF 1.4 model. Implementation experience in integrating a number of tools led to an optimized implementation (focused on tool integration as opposed to the original MOF focus of metadata repositories) that uses a subset of the modeling concepts in MOF 1.4. For example, Ecore does not support 'first class' Associations. Associations are mapped to a pair of Ecore References. To minimize confusion, we have used the term 'Ecore' to refer to the object model in the EMF framework. We use the terms 'Ecore model' and 'EMF model' interchangeably in this FAQ, because the object model of the Eclipse EMF framework is the Ecore model.
The designers of EMF are participating in the OMG process to influence the design of MOF 2.0 and UML 2.0, which are still being defined.
What is the relationship of EMF to OMGTM MDATM?
One of the key goals of EMF is to use simple visual models to allow easy integration of Java and XML tools. To accomplish this you can use a UML class model as input to the EMF framework. This model is then used to drive Java interface and implementation generation for EMF instances. These Java interfaces define a consistent programming model for tools built using EMF. The same EMF model is also used to generate the XML serialization (XMI 2.0 format) for EMF instances. Essentially EMF supports the key MDA concept of using models as input to development and integration tools which produce multiple programming language (Java in the case of Eclipse EMF itself) or data interchange format (XML) representations. The code generation and XML serialization is 'driven' from the same model.
EMF supports OMG XMI 2.0 XML serialization format and the use of UML models for the analysis and design of EMF models.
What is the relationship of EMF to JMITM?
JMI (JavaTM Metadata Interface) is a mapping of the OMG MOF 1.4 to the Java language developed by the Java Community Process. The JMI spec and the Eclipse EMF model to Java mapping were developed in parallel and are not the same. The Eclipse EMF Java mappings have been optimized for in memory tool integration using Java and XML while JMI has been optimized for metadata repository usage scenarios. Eclipse EMF designers are actively involved in the ongoing development of MOF 2.0 and related mappings to XML and Java that are expected to proceed in the OMG and Java Community Process respectively.
Service Data Objects (SDO)
What are Service Data Objects (SDO)?
Service Data Objects (SDO), previously Web Data Objects (WDO), is designed to simplify and unify the way in which applications handle data. Using SDO, application programmers can uniformly access and manipulate data from heterogeneous data sources, including relational databases, XML data sources, Web services, and enterprise information systems. For more information about the goals and architecture of SDO, see the whitepaper Next-Generation Data Programming: Service Data Objects.
SDO is based on the concept of disconnected data graphs. A data graph is a collection of tree-structured or graph-structured data objects. Under the disconnected data graphs architecture, a client retrieves a data graph from a data source, mutates the data graph, and can then apply the data graph changes back to the data source. More...
What is the relationship between SDO & WDO?
Web Data Objects, or WDO, is the name of an early release of SDO shipped in IBM WebSphere Application Server 5.1 and IBM WebSphere Studio Application Developer 5.1.2. If you've spent any time with WebSphere Studio 5.1.2, you should already be somewhat familiar with SDO, although you're probably accustomed to seeing it denoted as WDO, for example in library names. WDO is now called SDO.
What is the relationship between EMF & SDO?
EMF and SDO both deal with data representation. The SDO implementation is based on EMF and is essentially a thin layer (facade) over EMF. You can get SDO from the Eclipse EMF Project Downloads page.
How do I serialize the model of an SDO data graph?
It may be convenient to serialize the package in the data graph, along with the instance data that requires it. To do so, the package's resource needs to be added to the resource set of the data graph.
For example:
EDataGraph companyGraph = SDOFactory.eINSTANCE.createEDataGraph(); ResourceSet set = companyGraph.getResourceSet(); Resource packageResource = set.createResource(URI.createURI(companyPackage.getNsURI())); packageResource.getContents().add(companyPackage);
At load-time, the package will automatically be located with no further effort.
What is the relationship between SDO & JDO?
JDO is a Java Community Process (JCP) standard and stands for Java Data Objects. JDO looks at data programming in the Java environment and provides a common API to access data stored in various types of data sources. JDO preserves relationships between Java objects (graphs) and at the same time allows concurrent access to the data.
JDO's goal is similar to SDO's in that it wants to simplify and unify Java data programming. The main difference, however, is that JDO looks at the persistence issue only (the J2EE data tier or enterprise information system (EIS) tier), whereas SDO is more general and represents data that can flow between any J2EE tier, such as between a presentation and business tier.
SDO can be used in conjunction with JDO where JDO is a data source that SDO can access, applying the Data Transfer Object (DTO) design pattern.
What is the relationship between SDO & JAXB?
JAXB is a Java Community Process (JCP) standard and stands for Java API for XML Data Binding. As an XML binding framework for the Java language, JAXB performs marshalling/serializing (Java to XML) and unmarshalling/deserializing (XML to Java).
SDO defines a Java binding framework of its own and it goes one step further. While JAXB is only focused on a Java-to-XML binding, XML isn't the only kind of data SDO can bind to. SDO provides uniform access to data of various types through its Data Mediator Service (DMS). Examples of data types include relational databases (RDBs), entity Enterprise Java Beans (EJBs), or XML registries. SDO also offers both a static and dynamic API, whereas JAXB only provides a static binding.
What is the relationship between SDO & ADO .NET?
ADO .NET provides uniform data access between different tiers in the .NET framework.
ADO .NET and SDO share similar motivators for supporting XML and applications distributed on multiple tiers. Other than technical differences, one major difference between the two technologies is that ADO .NET is for the Microsoft .NET platform whereas SDO is for the Java (J2EE) platform.

subset: commoncrawl


text:
Talks Conclude With NHL Counteroffer
NEW YORK -- The proposals are flying back and forth between the NHL and the players' association. Whether significant progress is being made in the process still isn't all that clear.
The league made a counteroffer on Tuesday night in response to one it received from the players on Monday and now the NHL is waiting for another answer.
A full day of smaller group meetings wrapped up with a full bargaining session that lasted about 30 minutes Tuesday night. The union took the league's latest offer back to its headquarters to begin reviewing it.
"They did make a comprehensive response to what we gave them yesterday," executive director Donald Fehr said. "We asked a couple of questions, and now what we have to do is go through the document, try to make some sense out of it, compare it and see what the appropriate thing is to do next."
Fehr said he will get back in touch with the NHL on Wednesday morning, and added he anticipates the sides will get back together during the day.
NHL Commissioner Gary Bettman declined to provide details of the league's latest offer, but said it addressed specific areas the union requested.
"There were certain things that the players' association asked for that we agreed to, there were some things that we moved in their direction, and there were other things that we said no," he said. "That's part of the process."
But it's a process that has limited time to be completed. Bettman said Monday the NHL has told the union a deal needs to be in place by Jan. 11 so a 48-game season can begin eight days later.
It is unclear how many issues still need to be resolved and how far apart the sides are in key areas.
Both sides agreed that it is a positive sign they are getting into a rhythm of talking and meeting and exchanging ideas on a regular basis.
The only way to bridge the gaps to a deal that would save the season is to keep working at it together.
Small groups from each side met and conferred by conference calls all afternoon about provisions of a potential collective bargaining agreement. A full meeting of the negotiating teams didn't begin until 9 p.m. and wrapped up relatively quickly after the NHL presented its counterproposal.
The afternoon sessions were more for informational purposes.
There is a little less than two weeks left to reach an agreement and hold one week of training camp before starting the season. All games through Jan. 14 have been canceled, claiming more than 50 percent of the original schedule.
The NHL is the only North American professional sports league to cancel a season because of a labor dispute, losing the 2004-05 campaign to a lockout. A 48-game season was played in 1995 after a lockout stretched into January.
The NHL was supposed to be celebrating its annual outdoor Winter Classic between the Toronto Maple Leafs and Detroit Red Wings on Tuesday -- the 108th day of the lockout -- at Michigan Stadium. But that game was canceled long ago along with the All-Star game.
When the sides met Monday, for the first time since Dec. 13, the union brought a condensed counterproposal in response to the NHL's 288-page contract offer. There were some discussions between the negotiators and some time spent apart in internal meetings.
It is still possible this dispute eventually could be settled in the courts if the sides can't reach a deal on their own.
The NHL filed a class-action suit this month in U.S. District Court in New York in an effort to show its lockout is legal. In a separate move, the league filed an unfair labor practice charge with the National Labor Relations Board, contending bad-faith bargaining by the union.
Those moves were made because the players' association took steps toward potentially declaring a "disclaimer of interest," which would dissolve the union and make it a trade association. That would allow players to file antitrust lawsuits against the NHL.
Union members voted overwhelmingly to give their board the power to file the disclaimer by Wednesday. If that deadline passes, another authorization vote could be held to approve a later filing.
If progress in negotiations is made Wednesday, it seems likely that the union will let its self-imposed deadline pass with a disclaimer declaration.
Copyright 2012 by The Associated Press. All rights reserved. Material may not be redistributed.


text:
Two scientists from different generations won the Nobel Prize in medicine Monday for the groundbreaking discovery that cells in the body can be reprogrammed into completely different kinds, work that reflects the mechanism behind cloning and offers an alternative to using embryonic stem cells.
The work of British researcher John Gurdon and Japanese scientist Shinya Yamanaka—who was born the year Gurdon made his discovery—holds hope for treating diseases like Parkinson's and diabetes by growing customized tissue for transplant.
And it has spurred a new generation of laboratory studies into other illnesses, including schizophrenia, which may lead to new treatments.
Basically, Gurdon, 79, and Yamanaka, 50, showed how to make the equivalent of embryonic stem cells without the ethical questions those very versatile cells pose, a promise scientists are now scrambling to fulfill.
Once created, these "blank slate" cells can be nudged toward developing into other cell types. Skin cells can ultimately be transformed into brain cells, for example.
Just last week, scientists reported turning skin cells from mice into eggs that produced baby mice, a possible step toward new fertility treatments.
Gurdon and Yamanaka performed "courageous experiments" that challenged scientific opinion, said Doug Melton, co-director of the Harvard Stem Cell Institute.
"Their work shows … that while cells might be specialized to do one thing, they have the potential to do something else," Melton said. It "really lays the groundwork for all the excitement about stem cell biology."
Another Harvard stem cell researcher, Dr. George Daley said, "I don't think anybody is surprised" by the award announcement. "The fact that these two share it together is inspired."
In announcing the $1.2 million award, the Nobel committee at Stockholm's Karolinska Institute said the work has "revolutionized our understanding of how cells and organisms develop."
Gurdon showed in 1962 that DNA from specialized cells of tadpoles, like skin or intestinal cells, could be used to clone more tadpoles. In 1997, the same process led to the cloning of Dolly the sheep, showing it would also work in mammals.
Gurdon told reporters in London that at the time of his discovery, it had "no obvious therapeutic benefit at all. … It was almost 50 years before the value — the potential value — of that basic scientific research came to light."
Forty-four years after Gurdon's discovery, in 2006, Yamanaka and his team moved beyond tadpoles. They showed that a surprisingly simple recipe could turn mouse skin cells back into primitive cells, which in turn could be prodded into different kinds of mature cells. The work was later repeated with human cells.
In theory those primitive cells are "blank slates"—like embryonic stem cells that can be turned into any cell in the body.
Turning a skin cell into a stem cell takes weeks in a lab. Scientists introduce two to four genes that turn the cell's own genes on and off. It's a little like rebooting a computer, changing the cell from running the collection of genes that make it a skin cell into using another set that make it a stem cell.
Gurdon, who said his ambitions to become a scientist were dismissed as "completely ridiculous" by his headmaster when he was in his teens, has served as a professor of cell biology at Cambridge University's Magdalene College. He is currently at the Gurdon Institute in Cambridge, which he founded.
Yamanaka worked at the Gladstone Institute in San Francisco and Nara Institute of Science and Technology in Japan. He is currently at Kyoto University and also affiliated with the Gladstone Institute. Yamanaka is the first Japanese scientist to win the Nobel medicine award since 1987.
Asked how he planned to celebrate, Gurdon said he was invited to drinks at 6 o'clock.
"I intend to attend those drinks," he said dryly.
He described his skepticism when first getting the congratulatory call from Stockholm, saying that "the call came from someone in Sweden, and your immediate reaction is: 'Is this right? Is it true or is it someone pulling your leg?'"
Yamanaka told Japanese broadcaster NHK that he was at home doing chores on Monday when he got the call from Stockholm.
"Even though we have received this prize we have not really accomplished what we need to. I feel a deep sense of duty and responsibility," Yamanaka said.
Choosing Yamanaka as a Nobel winner just six years after his discovery is unusual. The Nobel committees typically reward research done more than a decade earlier, to make sure it has stood the test of time.
However, in 2010, the Nobel Prize in physics went to two researchers whose discoveries were also published six years earlier. In 2006, two American scientists won the medicine prize eight years after their work was published.
Prize committee member Juleen Zierath said Gurdon and Yamanaka's discoveries, which also earned them a Lasker award for basic research in 2009, could hold "immense potential," including in developing treatments for Parkinson's disease and in making cells that produce insulin. However, she added that therapeutic implications are still far away.
Experts welcomed the Nobel announcement, praising the duo for their groundbreaking and influential discoveries in a field riddled with ethical debates.
President George W. Bush outlawed federal funding for work on embryonic stem cells that hadn't been derived by a particular date. President Barack Obama overturned that order, allowing access to many more lines of cells.
"Everyone who works on developmental biology and on the understanding of disease mechanisms will applaud these excellent and clear choices for the Nobel Prize," said John Hardy, professor of Neuroscience at University College London. "Countless labs' work builds on the breakthroughs they have pioneered."
The idea of reprograming cells has been put to work in basic research on disease, through an approach sometimes called "disease in a dish."
The reprogramming allows scientists to create particular kinds of tissue they want to study, like lung tissue for studying cystic fibrosis, or brain tissue for Huntington's disease. By reprogramming cells from patients with a particular disease, they can create new tissue with the same genetic background, and study it in the lab. That can give new insights into the roots of the problem.
In addition, that approach allows them to screen drugs in the lab for possible new medicines.
The medicine award was the first Nobel Prize to be announced this year. The physics award will be announced Tuesday, followed by chemistry on Wednesday, literature on Thursday and the Nobel Peace Prize on Friday.
The economics prize, which was not among the original awards, but was established by the Swedish central bank in 1968, will be announced on Oct. 15.
Karl Ritter reported from Stockholm. AP writers Louise Nordstrom in Stockholm, Cassandra Vinograd and Raphael Satter in London, and Elaine Kurtenbach in Tokyo contributed to this report.
Nobel Prize website: http://nobelprize.org


text:
Planet Eclipse GSL - Green/Black
Planet Eclipse GSL - Green/Black
Precio habitual
Precio habitual
Precio de oferta
Precio unitario
Condition: 9/10
Color: Green/Black
Smooth, quiet and utterly devastating. The Geo3.5 epitomizes everything that is great about a spool valve single tube paintball marker. That it also offers exceptional efficiency and the trademark Planet Eclipse virtues of bulletproof reliability and ease of maintenance make it a simply unbeatable package.
Now in its third generation, the Geo platform has gained huge popularity amongst tournament and woodsball players alike. Speedball players appreciate the way that the very small amount of barrel rise even during ramping allows them to stay on target longer even when firing single-handedly during rapid reloading. And the efficiency giving them the ability to carry enough paint for even the longest of matches. In the woods, the light weight of the Geo3.1 combines with its incredibly quiet sound signature to make it the perfect companion for those extended periods on the field and for taking those shots when you don't want to give your position away.
Internally and externally the Geo3.5 utilizes the latest technologies developed by our engineers. The Electronics are fully adjustable via the onboard backlit LCD display and graphical user interface. Or if you prefer, with the optional ePortal kit you can connect the Geo3.1 to your laptop or home PC to adjust parameters, download latest versions of firmware or customize the graphics on the display. Mechanically, the Geo3.5 uses a Custom MAC solenoid valve system that drives the bolt mechanism and controls the filling of the firing chamber. Rather uniquely the speed of the bolt is externally adjustable via a dial on the trigger guard. Selecting a slower bolt speed reduces shot signature and recoil resulting in a soft, quiet shot; where a higher bolt speed will allow devastating rates of fire. The Geo3.5 offers both these options and an infinite range between.
In fact the Geo3.5 is all about giving the user control. For example, there are magnetic and leaf spring trigger return mechanisms as well as micro switch and optical trigger sensing circuits to choose from. Both an all-metal multi-ported bolt and a full rubber-tipped open-face bolt are included with the marker. With so many choices available as standard the user can quickly and easily tailor the feel and performance of the Geo3.5 to their specific requirements and preferences.
New to the Geo3.5 is the AT Pipe system. First designed and implemented on the Ego LV1, the AT Pipe system removes the need for macroline from the POPS ASA to the inline regulator. Instead air is transferred via the AT Pipe from the frame to the new SL4 inline regulator in a way that allows the marker to still be quickly and easily stripped, cleaned and maintained.
Also taken from the Ego LV1 are the supremely comfortable frame design with the fully contoured grips and console. These combine with inline regulator grip and crown to produce an incredibly comfortable yet
stable shooting platform. The combination of sticky rubber and contoured design offer exceptional grip in all conditions.
Of course every single Geo3.5 is constructed using the very best materials possible and meticulously hand built whilst undergoing rigorous inspection and testing at every stage. We do everything possible to ensure that each marker that leaves the facility is as close to perfection as possible.
But it's on the field where the Geo3.5 earns its stripes. And it's here were it simply destroys the competition.


text:
Date(s) - 09/09/2019
19:00 - 21:00
Eric Liddell Sports Centre
The Sharks is a competitive club providing swimming training sessions, as well as swimming lessons for people with physical and learning disabilities. The aim is to encourage fitness in athletes and help them to take part in gala competitions, up to international level.
Ages: from 6+
Tel: 07913 075373 (Marilyn Peciuch)
Email: email@example.com
Web: www.sharksofmottinghamdisabilityswimming.org.uk


text:
Yana Dee Size Guide
(Scroll down for information about kids sizes and accessory sizes.)
Contact us before ordering for personalized sizing advice.
Adult Sizes
Every body changes with time, and you will find that most Yana Dee clothing is way more versatile that what you are used to. These clothes will still fit well, even as you gain or lose a few pounds. Stretchy waistbands, wrap or faux-wrap styles, and contoured patterns help Yana Dee designs easily fit many different bodies, throughout life changes.
Pro Tips on Adult Size Selection
- Use your measurements, in inches, to find your Yana Dee size. It doesn't matter what your bra size is, or what size you wear in other brands.
- Only pay attention to the measurements that are relevant to the item you are considering. For example, don't worry about your bust measurement when ordering a skirt.
- Wrap, faux-wrap, and circle skirts and dresses can accommodate just about any hip or stomach measurement (including maternity).
Stock Adult Sizes: Additional Information
Stock Yana Dee clothing is ready to ship from our store in Traverse City. Yana Dee sizes are typically generous and versatile. If you "usually" wear a size XL, for example a size M/L or L will likely work for you for many items. The more "fitted" a Yana Dee item is designed to be, the more sizes we offer in stock. Bras, underwear, and many leggings are stocked in sizes XS-XL. Looser fit, wrap, and flowing items are usually available in size S/M and M/L. Moderately fitted items are usually available in size S, M, and L. We do our best to keep our size consistent from product to product, but the truth is, different styles fit differently. You are encouraged to contact us before ordering to learn more about how a particular design fits in each size. We have all the products and a measuring tape right in front of us, so we can figure out together if the item you are looking at on our website will work for you in person. .
Custom Adult Sizes
Some Yana Dee products are "Custom Made". This means the item doesn't exist until you order it! Even if you order a standard size, Yana will pull down the bolt of fabric in the color you choose, and cut out your dress, top, or skirt, just for you. This gives you a unique opportunity to have your clothing item made just the way you like it, to your unique proportions. Instead of picking a standard size, you might as well get out a measuring tape and provide your exact measurements! We can also add up to 4" to the length of most pieces free of charge, and are happy to take inches off as well. Maybe you have longer than average arms. Maybe you have a shorter torso and longer legs. Maybe you like your tops with extra waist coverage. Whatever your adjustment is, just leave a note to the item before you add it to your shopping cart. Always send a message before ordering if you have questions about adjustments!
Kid Sizes
Age graded sizing
Yana Dee kids sizes are based on age, and do not have a correlation to the "T" other brand use. Just like adult clothing, kids sizes are generous and versatile. Many kids items have more specific measurements right on the product page, to help you size appropriately.
- 0-6 Months: Select kids items are available in this small size. Very small people pants.
- 6-18 Months: Our smallest dress size, this may fit anywhere from 2 months up to 2 years or so.
- 1-2 Years: Many smaller people still wear this size at age 3.
- 3-5 Years: The most popular size, this dress fits lots of kids!
- 6-8 Years: Likely to work for slightly younger or older kids too.
- Juniors: The largest "kid" size. Many XS/Petite adults have found lovely dresses from this department! When the Junior size is too small, it's time to start shopping in the adult department.
Accessory Sizes
Unless otherwise specified, accessories are "one size fits most adults."
We usually put at least one measurement in each accessory product listing, to give you an approximate idea of how big the item is.
Some accessories (like hats) are recommended for either babies, kids, or adults. If a product is designed for a specific age demographic, this information will be in product title, just above the product price.


text:
Report: Flaws in EPA Drilling Pollution Data
The State Journal
22 February 2013
By Dina Cappiello, Associated Press
WASHINGTON (AP) — Limited data and unreliable estimates on air pollution from oil and natural gas production are hindering the Environmental Protection Agency's efforts to police the drilling boom, the agency's internal watchdog said in a report released Thursday.
Inspector General Arthur Elkins Jr. said the EPA has failed to directly measure emissions from some pieces of equipment and processes, and some estimates it does have are of "questionable quality."
"With limited data, human health risks are uncertain, states may design incorrect or ineffective emission control strategies, and EPA's decisions about regulating industry may be misinformed," Elkins said.
The EPA, under President Barack Obama, has stepped up regulation of natural gas drilling, which has been booming thanks to hydraulic fracturing, or fracking. About 25,000 wells a year are being fracked, a process in which water, chemicals and sand are injected at high pressure underground to release trapped natural gas.
Obama also wants to expand natural gas production as long as it doesn't damage the environment.
Oil and gas production, from the well site to processing plants to storage tanks and transmission lines, releases toxic and cancer-causing air pollutants, smog-forming gases and methane, a potent greenhouse gas blamed for global warming.
The oil and gas industry has said the EPA has overestimated emissions of methane and argued that they already were working to reduce pollution without the agency's intervention.
The EPA last year issued the first-ever standards to control smog- and soot-forming gases from gas wells site and updated existing rules to reduce cancer-causing pollution, such as benzene, from other equipment.
The agency, in response to the report, agreed to develop a comprehensive strategy to improve its pollution figures.
An industry association, America's Natural Gas Alliance, had not seen the report and had no comment late Thursday.