Australasia's Biggest Online Store

We won't be beaten by anyone. Guaranteed



Product Description
Product Details

Table of Contents

Foreword by Richard C. Gronback xixForeword by Mike Milinkovich xxiPreface xxiiiAcknowledgments xxviiReferences xxixPart I EMF Overview 1Chapter 1 Eclipse 31.1 The Projects 41.1.1 The Eclipse Project 41.1.2 The Modeling Project 51.1.3 The Tools Project 51.1.4 The Technology Project 51.1.5 Other Projects 51.2 The Eclipse Platform 61.2.1 Plug-In Architecture 61.2.2 Workspace Resources 71.2.3 Platform UI 71.2.4 Rich Client Platform 91.3 More Information 9Chapter 2 Introducing EMF 112.1 Unifying Java, XML, and UML 122.2 Modeling vs. Programming 152.3 Defining the Model 162.3.1 The Ecore (Meta) Model 172.3.2 Creating and Editing the Model 192.3.3 XMI Serialization 202.3.4 Java Annotations 212.3.5 The Ecore "Big Picture" 232.4 Generating Code 232.4.1 Generated Model Classes 242.4.2 Other Generated "Stuff" 262.4.3 Regeneration and Merge 272.4.4 The Generator Model 282.5 The Runtime Framework 292.5.1 Notification and Adapters 292.5.2 Object Persistence 312.5.3 The Reflective EObject API 352.5.4 Dynamic EMF 362.5.5 Foundation for Data Integration 382.6 EMF and Modeling Standards 392.6.1 Unified Modeling Language 392.6.2 Meta-Object Facility 392.6.3 XML Metadata Interchange 402.6.4 Model Driven Architecture 40Chapter 3 Model Editing with EMF.Edit 413.1 Displaying and Editing EMF Models 423.1.1 Eclipse UI Basics 433.1.2 EMF.Edit Support 453.2 Item Providers 463.2.1 Content and Label Item Providers 473.2.2 Item Property Source 493.2.3 Command Factory 503.2.4 Change Notification 513.2.5 Item Provider Implementation Classes 533.3 Command Framework 543.3.1 Common Command Framework 553.3.2 EMF.Edit Commands 593.3.3 EditingDomain 613.4 Generating EMF.Edit Code 653.4.1 Edit Generation 663.4.2 Editor Generation 673.4.3 Regenerating EMF.Edit Plug-Ins 68Chapter 4 Using EMF-A Simple Overview 694.1 Example Model: The Primer Purchase Order 704.2 Creating EMF Models and Projects 714.2.1 Creating an EMF Model from Annotated Java 724.2.2 Creating an EMF Project from a Rational Rose Class Model 804.2.3 Creating an EMF Project from an XML Schema 864.2.4 Creating a Generator Model for an Ecore Model 894.2.5 Other Formats 924.3 Generating Code 934.4 Running the Application 954.5 Continuing Development 98Part II Defining EMF Models 101Chapter 5 Ecore Modeling Concepts 1035.1 Ecore Model Uses 1045.2 The Ecore Kernel 1055.3 Structural Features 1065.3.1 Attributes 1105.3.2 References 1115.4 Behavioral Features 1125.5 Classifiers 1135.5.1 Classes 1145.5.2 Data Types 1165.6 Packages and Factories 1185.7 Annotations 1195.7.1 Annotations in EMF 1215.8 Modeled Data Types 1235.9 Ecore and User Models 125Chapter 6 UML 1276.1 UML Packages 1286.2 UML Specification for Classifiers 1286.2.1 Classes 1296.2.2 Enumerated Types 1306.2.3 Data Types 1316.3 UML Specification for Attributes 1326.3.1 Single-Valued Attributes 1326.3.2 Multi-Valued Attributes 1336.3.3 Attributes with a Default Value 1336.4 UML Specification for References 1346.4.1 Bidirectional, Non-Containment References 1356.4.2 Containment References 1366.4.3 Map References 1366.5 UML Specification for Operations 1386.6 Documentation 1406.7 Ecore Properties in Rational Rose 1406.7.1 Package Properties 1416.7.2 Classifier Properties 1426.7.3 Structural Feature Properties 1426.7.4 Operation Properties 1436.7.5 Model Element Properties 144Chapter 7 Java Source Code 1457.1 Java Specification for Classes 1467.1.1 Attributes 1477.1.2 References 1507.1.3 Compact Notation for Attributes and References 1527.1.4 Operations 1537.2 Java Specification for Enumerated Types 1587.2.1 Enumeration Literals 1587.3 Java Specification for Packages 1597.3.1 Data Types 1607.4 Java Specification for Maps 1617.4.1 Explicit Definition of Map Entry Classes in a Package 1617.4.2 Definition of Map-Typed References, Operations, and Parameters 1637.5 Java Specification for Annotations 164Chapter 8 Extended Ecore Modeling 1678.1 Feature Maps 1688.1.1 Multiple Features and Cross-Feature Order 1688.1.2 The FeatureMap Interface 1718.2 Modeling with Feature Maps 1738.2.1 UML 1738.2.2 Annotated Java 1758.2.3 XML Schema 176Chapter 9 XML Schema 1799.1 Schema 1809.1.1 Schema without Target Namespace 1809.1.2 Schema with Target Namespace 1819.1.3 Global Element or Attribute Declaration 1829.1.4 Element or Attribute Form Default 1839.1.5 EMF Extensions 1839.2 Simple Type Definitions 1849.2.1 Restriction 1849.2.2 Restriction with Enumeration Facets 1869.2.3 List Type 1889.2.4 Union Type 1889.2.5 Anonymous Type 1899.2.6 EMF Extensions 1909.3 Complex Type Definitions 1919.3.1 Extension and Restriction 1929.3.2 Simple Content 1939.3.3 Anonymous Type 1949.3.4 Abstract Type 1949.3.5 Mixed Type 1959.3.6 EMF Extensions 1979.3.7 Operations 1989.4 Attribute Declarations 2019.4.1 ID Attribute 2029.4.2 ID Reference or URI Attribute 2029.4.3 Required Attribute 2039.4.4 Default Value 2049.4.5 Qualified Attribute 2059.4.6 Global Attribute 2059.4.7 Attribute Reference 2059.4.8 EMF Extensions 2069.5 Element Declarations 2099.5.1 AnyType Element 2109.5.2 ID Element 2119.5.3 ID Reference or URI Element 2119.5.4 Nillable Element 2139.5.5 Default Value 2149.5.6 Qualified Element 2159.5.7 Global Element 2159.5.8 Element Reference 2169.5.9 Substitution Group 2169.5.10 EMF Extensions 2199.6 Model Groups 2229.6.1 Repeating Model Group 2229.6.2 Repeating Model Group Reference 2249.7 Wildcards 2259.7.1 Element Wildcard 2259.7.2 Attribute Wildcard 2269.7.3 EMF Extensions 2279.8 Annotations 2289.8.1 Documentation 2289.8.2 Appinfo 2299.8.3 Ignored Annotation 2299.8.4 Non-schema Attribute 2309.9 Predefined Schema Simple Types 2309.10 EMF Extensions 232Part III Using the EMF Generator 237Chapter 10 EMF Generator Patterns 23910.1 Modeled Classes 24010.1.1 Interfaces and Implementation Classes 24010.1.2 Accessor Methods 24110.1.3 Abstract Classes 24310.1.4 Interfaces 24310.2 Attributes 24310.2.1 Simple Attributes 24410.2.2 Data Type Attributes 24510.2.3 Enumerated Type Attributes 24810.2.4 Multi-Valued Attributes 25010.2.5 Default Values 25210.2.6 Volatile Attributes 25310.2.7 Non-Changeable Attributes 25410.2.8 Unsettable Attributes 25510.3 References 25710.3.1 One-Way References 25710.3.2 Bidirectional References 25910.3.3 Multiplicity-Many References 26110.3.4 Non-Proxy-Resolving References 26310.3.5 Containment References 26410.3.6 Volatile References 26610.3.7 Non-Changeable References 26710.3.8 Unsettable References 26810.3.9 Map References 26910.4 Feature Maps 27210.5 Operations 27310.6 Class Inheritance 27510.6.1 Single Inheritance 27510.6.2 Multiple Inheritance 27610.6.3 Interface Inheritance and Implementation 27710.7 Reflective Methods 27810.7.1 Feature IDs 27810.7.2 Reflective Accessors 27910.7.3 Inverse Handshaking Methods 28310.7.4 Feature ID Conversion Methods 28510.8 Factories and Packages 28710.9 Switch Classes and Adapter Factories 29110.10 Alternative Generator Patterns 29510.10.1 Performance Optimization 29510.10.2 Suppression of EMFisms 30210.11 Customizing Generated Code 305Chapter 11 EMF.Edit Generator Patterns 30911.1 Item Providers 31011.1.1 Content and Label Provider 31111.1.2 Item Property Source 31511.1.3 Command Factory 31811.1.4 Change Notification 31911.1.5 Object Creation 32111.2 Item Provider Adapter Factories 32711.3 Editor 33111.4 Action Bar Contributor 33411.5 Wizard 33611.6 Plug-Ins 337Chapter 12 Running the Generators 34112.1 EMF Code Generation 34112.2 The Generator UI 34612.3 Generator Model Properties 35012.3.1 Model Object Properties 35012.3.2 Package Properties 35912.3.3 Class Properties 36212.3.4 Feature Properties 36312.4 The Command-Line Generator Tools 36412.4.1 Headless Invocation 36512.4.2 Rose2GenModel 36612.4.3 XSD2GenModel 36912.4.4 Ecore2GenModel 36912.4.5 Generator 37012.5 The Generator Ant Tasks 37112.5.1 emf.Rose2Java 37312.5.2 emf.XSD2Java 37412.5.3 emf.Ecore2Java 37512.6 The Template Format 37512.6.1 An Example Template 37612.6.2 Template Extensibility 379Chapter 13 Example-Implementing a Model and Editor 38113.1 Getting Started 38113.2 Generating the Model 38413.3 Implementing Volatile Features 38413.4 Implementing Data Types 38713.5 Running the ExtendedPO2 Editor 39213.6 Restricting Reference Targets 39313.7 Splitting the Model into Multiple Packages 39613.7.1 Resolving Package Dependencies 39813.7.2 Restricting Reference Targets Revisited 40113.8 Editing Multiple Resources Concurrently 40413.8.1 Cross-Document Non-Containment References 40413.8.2 Cross-Document Containment References 411Part IV Programming with EMF 417Chapter 14 Exploiting Metadata 41914.1 Packages 41914.1.1 Accessing Package Metadata Generically 42014.1.2 Locating Packages 42214.2 Reflection 42614.2.1 Creating Objects 42614.2.2 Interrogating and Modifying Objects 42714.3 Dynamic EMF 43214.4 Extended Metadata 437Chapter 15 Persistence 44315.1 Overview of the Persistence Framework 44315.2 The EMF Persistence API 44715.2.1 URI 44715.2.2 URIConverter 44915.2.3 Resource 45015.2.4 Resource.Factory and Resource.Factory.Registry 45615.2.5 ResourceSet 45915.3 XML Resources 46215.3.1 Default Serialization Format 46215.3.2 Deserialization 46815.3.3 Options 47015.3.4 Dynamic EMF 47915.3.5 Extended Metadata 48215.3.6 Other Features 48515.4 EMF Resource and Resource Factory Implementations 48915.4.1 Base XML 48915.4.2 Generic XML 49015.4.3 XMI 49015.4.4 Ecore 49215.4.5 EMOF 49215.4.6 Generated 49315.5 Performance Considerations 49415.5.1 Recommended XML Resource Options 49415.5.2 Caching Intrinsic IDs 49515.5.3 Caching Resource URIs 49615.6 Custom Storage for Active Objects 49715.6.1 Using an EStore 49915.6.2 EStore and Generated Classes 500Chapter 16 Client Programming Toolbox 50316.1 Tree Iterators and Switches 50316.2 Adapters 50816.2.1 Object Adapting 50816.2.2 Behavioral Extensions 51516.2.3 Content Adapters 51916.2.4 Observing Generated Classes 52116.3 Cross-Referencers 52316.3.1 Basic Cross-Referencers 52316.3.2 Cross-Reference Adapters 52616.4 Copying Objects 52916.5 Comparing Objects 533Chapter 17 The Change Model 53717.1 Describing a Change 53717.1.1 Applying a Change Description 53917.1.2 Changing Multi-Valued Features 54117.1.3 Changing Resources 54417.2 Change Recording 54517.2.1 Transaction Atomicity and Rollback 547Chapter 18 The Validation Framework 54918.1 Constraints and Invariants 54918.2 Effects on Generated Code 55318.3 Invoking Validation 55718.4 Basic EObject Constraints 56318.5 XML Schema Constraints 564Chapter 19 EMF.Edit Programming 56719.1 Overriding Commands 56719.2 Customizing Views 57319.2.1 Suppressing Model Objects 57319.2.2 Using List and Table Viewers 58019.2.3 Adding Non-Model Intermediary View Objects 587Chapter 20 Outside of the Eclipse IDE 59920.1 Rich Client Platform 59920.1.1 RCP and EMF 60020.1.2 Launching an RCP Application 60120.1.3 Generated Code in an RCP Application 60620.1.4 Deploying an RCP Application 60820.2 Stand-Alone Applications 60820.2.1 Adding EMF to the Class Path 60920.2.2 Registering the Resource Factory 61220.2.4 Registering the Package 614Chapter 21 EMF 2.3 and 2.4 61721.1 Java 5.0 Support 61721.1.1 Enumerations 61821.1.2 Generics 62221.2 EMF Persistence Enhancements 63221.2.1 Resource Deletion 63321.2.2 Content Types 63421.2.3 Other Enhancements 63721.3 Other New Features 64121.3.1 Ecore Validation 64221.3.2 Reference Keys 64321.3.3 Annotated Java Model Importer 64521.4 Resource Options 64621.4.1 XMLResource Options 64721.5 Generator Model Properties 64821.5.1 Model Object Properties 64821.5.2 Package Properties 65121.5.3 Enum Properties 652Appendix A UML Notation 653Appendix B Summary of Example Models 659Index 675

Promotional Information

The Eclipse Modeling Framework (EMF) is a framework and code generation facility that lets you define a model in any of these forms--Java interfaces, UML diagram, or XML Schema. EMF doesn't require a completely different methodology or any sophisticated modeling tools. All you need to get started with EMF are the Eclipse Java Development Tools. EMF relates modeling concepts directly to their implementations, thereby bringing to Eclipse-and Java developers in general-the benefits of modeling with a low cost of entry. Unlike most tools of this type, EMF is truly integrated with and tuned for efficient programming. It answers the often-asked question, "Should I model or should I program?" with a resounding, "Both." This book, written by the lead architects of EMF, provides both an introduction and tutorial to how to leverage and work with this powerful framework. In addition to the new coverage this book provides:* A basic overview of the most important concepts in EMF and modeling.* Analysis of the most important framework classes and generator patterns including insightful discussions of various design alternatives.* Examples of many common framework customizations and programming techniques.

About the Author

Frank Budinsky is a co-architect and project lead for the EMF subproject in Eclipse. Ed Merks is the lead architect of the XSD technology project and a co-architect of the EMF tools project, both at Eclipse. Dave Steinberg is a core member of the EMF development team in IBM's Software Group. He has contributed to the design and implementation of both the EMF runtime and code generator components. All authors work out of the IBM Toronto Lab.

Ask a Question About this Product More...
Write your question below:
Look for similar items by category
Home » Books » Computers » Programming » Java
How Fishpond Works
Fishpond works with suppliers all over the world to bring you a huge selection of products, really great prices, and delivery included on over 25 million products that we sell. We do our best every day to make Fishpond an awesome place for customers to shop and get what they want — all at the best prices online.
Webmasters, Bloggers & Website Owners
You can earn a 5% commission by selling Budinsky: Eclips Modeli Framewrk _p2 on your website. It's easy to get started - we will give you example code. After you're set-up, your website can earn you money while you work, play or even sleep! You should start right now!
Authors / Publishers
Are you the Author or Publisher of a book? Or the manufacturer of one of the millions of products that we sell. You can improve sales and grow your revenue by submitting additional information on this title. The better the information we have about a product, the more we will sell!
Item ships from and is sold by Fishpond World Ltd.
Back to top