This book is a comprehensive introduction to and developer's quick reference for the Eclipse Modeling Framework (EMF). EMF is a powerful framework and code-generation facility for building Java applications based on simple model definitions.
Part 1. EMF Overview
Chapter 1. Eclipse
Section 1.1. The Projects
Section 1.2. The Eclipse Platform
Section 1.3. More Information
Chapter 2. Introducing EMF
Section 2.1. Unifying Java, XML, and UML
Section 2.2. Modeling vs. Programming
Section 2.3. Defining the Model
Section 2.4. Generating Code
Section 2.5. The EMF Framework
Section 2.6. EMF and Modeling Standards
Chapter 3. Model Editing with EMF.Edit
Section 3.1. Displaying and Editing EMF Models
Section 3.2. Item Providers
Section 3.3. Command Framework
Section 3.4. Generating EMF.Edit Code
Chapter 4. Using EMF—A Simple Overview
Section 4.1. Example Model: The Primer Purchase Order
Section 4.2. Creating EMF Models and Projects
Section 4.3. Generating Code
Section 4.4. Running the Application
Section 4.5. Continuing Development
Part II. Defining EMF Models
Chapter 5. Ecore Modeling Concepts
Section 5.1. Core Model Uses
Section 5.2. The Ecore Kernel
Section 5.3. Structural Features
Section 5.4. Behavioral Features
Section 5.5. Classifiers
Section 5.6. Packages and Factories
Section 5.7. Annotations
Section 5.8. Modeled Data Types
Chapter 6. Java Source Code
Section 6.1. Java Specification for Packages
Section 6.2. Java Specification for Classes
Section 6.3. Java Specification for Enumerations
Section 6.4. Java Specification for Data Types
Section 6.5. Java Specification for Maps
Chapter 7. XML Schema
Section 7.1. Schema Definition of Packages
Section 7.2. Schema Definition of Classes
Section 7.3. Schema Definition of Attributes
Section 7.4. Schema Definition of References
Section 7.5. Schema Simple Types
Chapter 8. UML
Section 8.1. UML Packages
Section 8.2. UML Specification for Classifiers
Section 8.3. UML Specification for Attributes
Section 8.4. UML Specification for References
Section 8.5. UML Specification for Operations
Part III. Using the EMF Generator
Chapter 9. EMF Generator Patterns
Section 9.1. Modeled Classes
Section 9.2. Attributes
Section 9.3. References
Section 9.4. Operations
Section 9.5. Class Inheritance
Section 9.6. Reflective Methods
Section 9.7. Factories and Packages
Section 9.8. Switch Classes and Adapter Factories
Section 9.9. Customizing Generated Classes
Chapter 10. EMF. Edit Generator Patterns
Section 10.1. Item Providers
Section 10.2. Item Provider Adapter Factories
Section 10.3. Editor
Section 10.4. Action Bar Contributor
Section 10.5. Wizard
Section 10.6. Plug-Ins
Chapter 11. Running the Generators
Section 11.1. EMF Code Generation
Section 11.2. The Generator GUI
Section 11.3. The Command-Line Generator Tools
Section 11.4. The Template Format
Chapter 12. Example—Implementing a Model and Editor
Section 12.1. Getting Started
Section 12.2. Generating the Model
Section 12.3. Implementing Volatile Features
Section 12.4. Implementing Data Types
Section 12.5. Running the ExtendedPO2 Editor
Section 12.6. Restricting Reference Targets
Section 12.7. Splitting the Model into Multiple Packages
Section 12.8. Editing Multiple Resources Concurrently
Part IV. Programming with EMF
Chapter 13. EMF Client Programming
Section 13.1. Packages and Factories
Section 13.2. The EMF Persistence API
Section 13.3. EMF Resource Implementations
Section 13.4. Adapters
Section 13.5. Working with EMF Objects
Section 13.6. Dynamic EMF
Chapter 14. EMF.Edit Programming
Section 14.1. Overriding Commands
Section 14.2. Customizing Views
Part V. EMF API
Chapter 15. The org.eclipse.emf.common Plug-In
Section 15.1. The org.eclipse.emf.common Package
Section 15.2. The org.eclipse.emf.common.command Package
Section 15.3. The org.eclipse.emf.common.notify Package
Section 15.4. The org.eclipse.emf.common.util Package
Chapter 16. The org.eclipse.emf.common.ui Plug-In
Section 16.1. The org.eclipse.emf.common.ui Package
Section 16.2. The org.eclipse.emf.common.ui.celleditor Package
Section 16.3. The org.eclipse.emf.common.ui.viewer Package
Chapter 17. The org.eclipse.emf.ecore Plug-In
Section 17.1. The org.eclipse.emf.ecore Package
Section 17.2. The org.eclipse.emf.ecore.plugin Package
Section 17.3. The org.eclipse.emf.ecore.resource Package
Section 17.4. The org.eclipse.emf.ecore.util Package
Chapter 18. The org.eclipse.emf.ecore.xmi Plug-In
Section 18.1. The org.eclipse.emf.ecore.xmi Package
Part VI. EMF.Edit API
Chapter 19. The org.eclipse.emf.edit Plug-In
Section 19.1. The org.eclipse.emf.edit Package
Section 19.2. The org.eclipse.emf.edit.command Package
Section 19.3. The org.eclipse.emf.edit.domain Package
Section 19.4. The org.eclipse.emf.edit.provider Package
Section 19.5. The org.eclipse.emf.edit.provider.resource Package
Section 19.6. The org.eclipse.emf.edit.tree Package
Section 19.7. The org.eclipse.emf.edit.tree.provider Package
Section 19.8. The org.eclipse.emf.edit.tree.util Package
Chapter 20. The org.eclipse.emf.edit.ui Plug-In
Section 20.1. The org.eclipse.emf.edit.ui Package
Section 20.2. The org.eclipse.emf.edit.ui.action Package
Section 20.3. The org.eclipse.emf.edit.ui.celleditor Package
Section 20.4. The org.eclipse.emf.edit.ui.dnd Package
Section 20.5. The org.eclipse.emf.edit.ui.provider Package
Appendix A. UML Notation
- Classes and Interfaces
- Enumerations and Data Types
- Class Relationships
Appendix B. Summary of Example Models
- SimplePO
- PrimerPO
- ExtendedPO1
- ExtendedPO2
- ExtendedPO3
About This Book
This book assumes the reader is familiar with object-oriented programming concepts, and specifically with the Java programming language. Previous exposure to modeling techniques such as UML class diagrams, although helpful, is not required.
Part I (Chapters 1 to 4) provides a basic overview of the most important concepts in EMF and modeling. This part teaches someone with basic Java programming skills everything needed to start using EMF to model and build an application.
Part II (Chapters 5 to 8) presents a thorough overview of EMF's metamodel, Ecore, followed by details of the mappings between Ecore and the other supported model-definition forms: annotated Java, XML Schema, and UML.
Part III (Chapters 9 to 12) includes detailed analyses of EMF's code-generator patterns and tools, followed by an end-to-end example of a non-trivial EMF application.
Part IV (Chapters 13 and 14) provides a more in-depth analysis of the EMF and EMF.Edit frameworks, including discussions of design alternatives and examples of common framework customizations and programming techniques.
Part V (Chapters 15 to 18) and Part VI (Chapters 19 and 20) finish off the book with a complete API quick reference for all of the classes and methods in the 1.1 versions of the core EMF and EMF.Edit frameworks.