| 
| An org.eclipse.emf.validation.examples.ocl example plug-in howto [message #64066] | Mon, 03 November 2008 12:38  |  | 
| Eclipse User  |  |  |  |  | Hi, I know a lot of people, including myself, have had a lot of trouble
 getting the very nice org.eclipse.emf.validation.examples.ocl example
 plugin to work [see
 http://wiki.eclipse.org/EMF-QTV_1.1_New_and_Noteworthy#New_V alidation_Constraint_Provider_Example]
 with their own model/constraints. To this end I have written a quick howto
 for new users. If I have time, and if people are interested, I can convert
 this into an Eclipse Corner article. Any errors you find please report
 them.
 
 In case you don't know the purpose of the plugin was written to allow OCL
 constraints to be defined in a text file. These constraints are then
 applied to a model and can be validated using the Eclipse Validation
 Framework.
 
 So now the howto....
 
 1. Install Eclipse Modeling Environment from
 http://www.eclipse.org/downloads/packages/eclipse-modeling-t ools-includes-incubating-components/ganymeder
 
 2. Create a new empty EMF project
 File->New Project->Empty EMF Project
 Project name: org.mycompany.product
 
 3. Import an existing EMF model into the new project
 Select the "model" folder
 Right click and select Import->File System
 In this example the model imported is myModel.ecore
 
 4. Create the .genmodel for the EMF model so we can autogenerate the GEF
 based model editor
 New->Other->EMF Model
 Name: Product.genmodel
 Select Ecore model importer
 Select the myModel.ecore model
 
 5. Open the new Product.genmodel
 Select the root object and righ click
 Select "Generate All"
 
 This will create a GEF based editor off the myModel.ecore model
 
 6. Bring the OCL example code into your project
 File->New->Example->OCL Example
 File->New->Example->General Validation Example
 File->New->Example->Validation Adapter Example
 
 7. Delete the following projects as we do not want to use the generated
 "Library" example settings
 org.eclipse.emf.examples.library
 org.eclipse.emf.examples.library.edit
 org.eclipse.emf.examples.library.editor
 src folder from under org.eclipse.emf.validation.examples.ocl
 Library.ocl file from constraints folder in
 org.eclipse.emf.validation.examples.ocl
 
 8. Place our OCL constraints file in the OCL folder in
 org.eclipse.emf.validation.examples.ocl
 Select the "constraints" folder
 Right click and select Import->File System
 In this example the constraints imported are Product_constraints.ocl
 
 9. Open plugin.xml in org.eclipse.emf.validation.examples.ocl
 Change the last constraintProvider meta-data to match your models
 namespace and OCL file
 
 <constraintProvider
 class=" org.eclipse.emf.validation.examples.ocl.OCLConstraintProvide r "
 category="Constraints from an OCL Document">
 <package
 namespaceUri=" http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0"/>
 <ocl path="constraints/Product_constraints.ocl"/>
 </constraintProvider>
 
 10. Edit plugin.xml in org.eclipse.emf.validation.examples.ocl and change
 the namespaceUri as noted below
 
 *Delete
 http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0
 *Insert http://www.mycompany/product
 
 11. Fix dependencies in org.eclipse.emf.validation.examples.general
 *Remove the following
 org.eclipse.emf.examples.library
 org.eclipse.emf.examples.library.edit
 org.eclipse.emf.examples.library.editor
 
 *Insert the following
 myProduct
 myProduct.editor
 myProduct.edit
 myProduct.tests
 
 12. Edit plugin.properties in org.eclipse.emf.validation.examples.general
 *Remove the following
 EXTLibraryConstraintsCategory=EXT Library Constraints
 
 NonEmptyNameConstraint=Non-Empty Names
 NonEmptyNameConstraint.description=All items in an EXT library model
 should have some unique identifier or name.
 
 # 0 - An EClass(metaclass) name for the element that was found to have
 no unique identifier.
 NonEmptyNameConstraint.message=A {0} has been found to have no unique
 identifier (name or title).
 
 *Insert the following
 ProductConstraintsCategory=Product Constraints
 
 13. Edit plugin.xml in org.eclipse.emf.validation.examples.general
 *Replace the first <extension/> with the following
 
 <extension point="org.eclipse.ui.editorActions">
 <editorContribution
 id=" org.eclipse.emf.validation.examples.general.editorContributi on "
 targetID="product.presentation.ProductEditorID">
 <menu
 label="%_UI_ValidationMenu_label"
 path="Product.ProductMenuID/additions"
 id="org.eclipse.emf.validationMenuID">
 <separator name="additions"/>
 </menu>
 <action
 label="%ValidateElementsAction.label"
 icon="$nl$/icons/elcl16/validate_co.gif"
 
 class=" org.eclipse.emf.validation.examples.general.actions.BatchVal idationDelegate "
 
 menubarPath="ProductMenuID/org.eclipse.emf.validationMenuID/additions "
 
 id=" org.eclipse.emf.validation.pde.example.general.ui.validateAc tion "/>
 <action
 label="%EnableLiveValidationAction.label"
 
 class=" org.eclipse.emf.validation.examples.general.actions.EnableLi veValidationDelegate "
 
 menubarPath="ProductMenuID/org.eclipse.emf.validationMenuID/additions "
 
 id=" org.eclipse.emf.validation.pde.example.general.ui.enableLive ValidationAction "/>
 <action
 label="%ShowValidationEventsAction.label"
 
 class=" org.eclipse.emf.validation.examples.general.actions.ShowVali dationEventsDelegate "
 style="toggle"
 state="false"
 
 menubarPath="ProductMenuID/org.eclipse.emf.validationMenuID/additions "
 
 id=" org.eclipse.emf.validation.pde.example.general.ui.showValida tionEventsAction "/>
 </editorContribution>
 </extension>
 <extension point="org.eclipse.ui.popupMenus">
 <viewerContribution targetID="Product.presentation.ProductEditorID"
 id=" org.eclipse.emf.validation.examples.general.viewerContributi on ">
 <menu
 label="%_UI_ValidationMenu_label"
 path="additions"
 id="org.eclipse.emf.validationMenuID">
 <separator name="additions"/>
 </menu>
 <action
 label="%ValidateElementsAction.label"
 icon="$nl$/icons/elcl16/validate_co.gif"
 
 class=" org.eclipse.emf.validation.examples.general.actions.BatchVal idationDelegate "
 menubarPath="org.eclipse.emf.validationMenuID/additions"
 
 id=" org.eclipse.emf.validation.pde.example.general.ui.validateAc tion "/>
 <action
 label="%EnableLiveValidationAction.label"
 
 class=" org.eclipse.emf.validation.examples.general.actions.EnableLi veValidationDelegate "
 menubarPath="org.eclipse.emf.validationMenuID/additions"
 
 id=" org.eclipse.emf.validation.pde.example.general.ui.enableLive ValidationAction "/>
 <action
 label="%ShowValidationEventsAction.label"
 
 class=" org.eclipse.emf.validation.examples.general.actions.ShowVali dationEventsDelegate "
 style="toggle"
 state="false"
 menubarPath="org.eclipse.emf.validationMenuID/additions"
 
 id=" org.eclipse.emf.validation.pde.example.general.ui.showValida tionEventsAction "/>
 </viewerContribution>
 </extension>
 
 14. Edit plugin.xml in org.eclipse.emf.validation.examples.general
 *Remove the following second <extension/>
 
 <extension point="org.eclipse.emf.validation.constraintProviders">
 <category
 name="%ProductConstraintsCategory"
 id="org.eclipse.emf.validation.pde.example.general.ui.library "/>
 <constraintProvider cache="true">
 <package
 namespaceUri=" http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0"/>
 <constraints
 categories="org.eclipse.emf.validation.pde.example.general.ui.library ">
 <constraint lang="Java"
 class=" org.eclipse.emf.validation.examples.general.constraints.NonE mptyNamesConstraint "
 severity="ERROR"
 mode="Live"
 name="%NonEmptyNameConstraint"
 id=" org.eclipse.emf.validation.pde.example.general.ui.NameNotEmp ty "
 statusCode="1">
 <description>
 %NonEmptyNameConstraint.description
 </description>
 <message>
 %NonEmptyNameConstraint.message
 </message>
 <target class="Library">
 <event name="Set">
 <feature name="name"/>
 </event>
 <event name="Unset">
 <feature name="name"/>
 </event>
 </target>
 <target class="Book">
 <event name="Set">
 <feature name="title"/>
 </event>
 <event name="Unset">
 <feature name="title"/>
 </event>
 </target>
 </constraint>
 </constraints>
 </constraintProvider>
 </extension>
 
 15. Edit the BatchValidationDeligate.java file in
 org.eclipse.emf.validation.examples.general.actions
 Change the following to reflect your model settings
 *Delete import
 org.eclipse.emf.examples.extlibrary.presentation.EXTLibraryE ditor;
 
 *Insert import
 Product.presentation.ProductEditor;
 
 *Delete
 protected EXTLibraryEditor editor = null;
 
 *Insert
 protected ProductEditor editor = null;
 
 *Delete
 public void setActiveEditor(IAction action, IEditorPart targetEditor) {
 this.editor = (EXTLibraryEditor) targetEditor;
 if ( targetEditor != null ) {
 this.shell = targetEditor.getSite().getShell();
 }
 }
 
 *Insert
 public void setActiveEditor(IAction action, IEditorPart targetEditor) {
 this.editor = (ProductEditor) targetEditor;
 if ( targetEditor != null ) {
 this.shell = targetEditor.getSite().getShell();
 }
 }
 
 16. Edit the EnableLiveValidation.java file in
 org.eclipse.emf.validation.examples.general.actions
 Change the following to reflect your model settings
 *Delete import
 org.eclipse.emf.examples.extlibrary.presentation.EXTLibraryE ditor;
 
 *Insert import
 Product.presentation.ProductEditor;
 
 *Delete
 protected EXTLibraryEditor editor = null;
 *Insert
 protected ProductEditor editor = null;
 
 *Delete
 public void setActiveEditor(IAction action, IEditorPart targetEditor) {
 this.editor = (EXTLibraryEditor) targetEditor;
 if ( targetEditor != null ) {
 this.shell = targetEditor.getSite().getShell();
 }
 }
 
 *Insert
 public void setActiveEditor(IAction action, IEditorPart targetEditor) {
 this.editor = (ProductEditor) targetEditor;
 if ( targetEditor != null ) {
 this.shell = targetEditor.getSite().getShell();
 }
 }
 
 17. Edit the NonEmptyNamesConstraint.java file in
 org.eclipse.emf.validation.examples.general.constraints
 *Delete this file
 
 18. Fix dependencies in org.eclipse.emf.validation.examples.adaptor
 *Remove
 org.eclipse.emf.examples.library
 
 *Insert
 myProduct
 
 19. Edit Startup.java file in org.eclipse.emf.validation.examples.adapter
 *Delete
 import org.eclipse.emf.examples.extlibrary.EXTLibraryPackage;
 *Insert
 import Product.ProductPackage;
 
 *Delete
 public void earlyStartup() {
 EValidator.Registry.INSTANCE.put(
 EXTLibraryPackage.eINSTANCE,
 new EValidatorAdapter());
 }
 
 *Insert
 
 public void earlyStartup() {
 EValidator.Registry.INSTANCE.put(
 ProductPackage.eINSTANCE,
 new EValidatorAdapter());
 }
 
 20. Edit plugin.properties file in
 org.eclipse.emf.validation.examples.adapter
 *Remove
 dependency org.eclipse.emf.examples.library
 
 21. Edit plugin.xml file in org.eclipse.emf.validation.examples.adapter
 *Delete
 
 <extension point="org.eclipse.emf.validation.constraintBindings">
 <clientContext id="org.eclipse.emf.validation.examples.adapter">
 <enablement>
 <and>
 <instanceof value="org.eclipse.emf.ecore.EObject"/>
 <test
 property="org.eclipse.emf.validation.examples.adapter.ePackage "
 value=" http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0"/>
 </and>
 </enablement>
 </clientContext>
 
 <binding
 context="org.eclipse.emf.validation.examples.adapter"
 category="emf-validation-example"/>
 </extension>
 
 *Insert
 
 <extension point="org.eclipse.emf.validation.constraintBindings">
 <clientContext id="org.eclipse.emf.validation.examples.adapter">
 <enablement>
 <and>
 <instanceof value="org.eclipse.emf.ecore.EObject"/>
 <test
 property="org.eclipse.emf.validation.examples.adapter.ePackage "
 value="http://www.mycompany/product"/>
 </and>
 </enablement>
 </clientContext>
 
 <binding
 context="org.eclipse.emf.validation.examples.adapter"
 category="emf-validation-example"/>
 </extension>
 
 *Delete
 
 <constraintProvider cache="true">
 <package
 namespaceUri=" http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0"/>
 
 <constraints categories="emf-validation-example/adapter">
 <constraint
 lang="Java"
 severity="INFO"
 mode="Batch"
 name="%example1.name"
 id="example1"
 statusCode="201"
 
 class=" org.eclipse.emf.validation.examples.adapter.constraints.Exam pleConstraint ">
 <description>%example1.desc</description>
 <message>%example1.msg</message>
 <!-- This constraint applies to any library element. -->
 <target class="Library"/>
 <target class="Writer"/>
 <target class="Book"/>
 </constraint>
 </constraints>
 </constraintProvider>
 
 *Insert
 
 <constraintProvider cache="true">
 <package namespaceUri="http://www.mycompany/product"/>
 
 <constraints categories="emf-validation-example/adapter">
 <constraint
 lang="Java"
 severity="INFO"
 mode="Batch"
 name="%example1.name"
 id="example1"
 statusCode="201"
 
 class=" org.eclipse.emf.validation.examples.adapter.constraints.Exam pleConstraint ">
 <description>%example1.desc</description>
 <message>%example1.msg</message>
 <!-- This constraint applies to any library element. -->
 <target class="Library"/>
 <target class="Writer"/>
 <target class="Book"/>
 </constraint>
 </constraints>
 </constraintProvider>
 
 22. Create a new Run Configuration so we can see the GEF editor for our
 myModel.ecore
 Run->Run->Run as Eclipse Application
 
 This operation will result in a new Eclipse workspace session starting.
 This new workspace will have the GEF based editor and OCL example plugins
 built into it.
 
 23. In the new workspace do the following.
 Create a new empty EMF project
 File->New Project->Empty EMF Project
 Project name: myProduct
 
 This will create a project to hold our instance model
 
 24. In the new workspace do the following.
 File->New->Example EMF Model Creation Wizards
 Select Product Model
 File name: my.Product
 
 25. Create a model instance using the GEF editor
 
 26. Validate the using the context menu (right click a model
 element->Validation->Validate Elements... or simply right click a model
 element->Validate)
 
 27. Be impressed :)
 |  |  |  | 
|  | 
| 
| Re: An org.eclipse.emf.validation.examples.ocl example plug-in howto [message #64161 is a reply to message #64066] | Tue, 04 November 2008 09:01   |  | 
| Eclipse User  |  |  |  |  | Originally posted by: cdamus.zeligsoft.com 
 Hi, Ronan,
 
 (copying the EMF newsgroup which is home to this component)
 
 I second Mark's comment:  this is exactly the kind of contribution that
 we are thrilled to see in the EMF Wiki.  In fact, I think this would be
 the first recipe for the validation component.  Feel free to add it by
 following the "Recipes" link, here:
 
 http://wiki.eclipse.org/EMF/Validation#Documentation
 
 As you probably know, the Wikipedia technology makes formatting a recipe
 like yours a snap.
 
 Thanks!
 
 Christian
 
 
 Ronan wrote:
 > Hi,
 > I know a lot of people, including myself, have had a lot of trouble
 > getting the very nice org.eclipse.emf.validation.examples.ocl example
 > plugin to work [see
 >  http://wiki.eclipse.org/EMF-QTV_1.1_New_and_Noteworthy#New_V alidation_Constraint_Provider_Example]
 > with their own model/constraints. To this end I have written a quick
 > howto for new users. If I have time, and if people are interested, I can
 > convert this into an Eclipse Corner article. Any errors you find please
 > report them.
 >
 > In case you don't know the purpose of the plugin was written to allow
 > OCL constraints to be defined in a text file. These constraints are then
 > applied to a model and can be validated using the Eclipse Validation
 > Framework.
 >
 > So now the howto....
 >
 > 1. Install Eclipse Modeling Environment from
 >  http://www.eclipse.org/downloads/packages/eclipse-modeling-t ools-includes-incubating-components/ganymeder
 
 >
 >
 > 2. Create a new empty EMF project
 > File->New Project->Empty EMF Project
 > Project name: org.mycompany.product
 >
 > 3. Import an existing EMF model into the new project
 > Select the "model" folder
 > Right click and select Import->File System
 > In this example the model imported is myModel.ecore
 >
 > 4. Create the .genmodel for the EMF model so we can autogenerate the GEF
 > based model editor
 > New->Other->EMF Model
 > Name: Product.genmodel
 > Select Ecore model importer
 > Select the myModel.ecore model
 >
 > 5. Open the new Product.genmodel
 > Select the root object and righ click
 > Select "Generate All"
 >
 > This will create a GEF based editor off the myModel.ecore model
 >
 > 6. Bring the OCL example code into your project
 > File->New->Example->OCL Example
 > File->New->Example->General Validation Example
 > File->New->Example->Validation Adapter Example
 >
 > 7. Delete the following projects as we do not want to use the generated
 > "Library" example settings
 > org.eclipse.emf.examples.library
 > org.eclipse.emf.examples.library.edit
 > org.eclipse.emf.examples.library.editor
 > src folder from under org.eclipse.emf.validation.examples.ocl
 > Library.ocl file from constraints folder in
 > org.eclipse.emf.validation.examples.ocl
 >
 > 8. Place our OCL constraints file in the OCL folder in
 > org.eclipse.emf.validation.examples.ocl
 > Select the "constraints" folder
 > Right click and select Import->File System
 > In this example the constraints imported are Product_constraints.ocl
 >
 > 9. Open plugin.xml in org.eclipse.emf.validation.examples.ocl
 > Change the last constraintProvider meta-data to match your models
 > namespace and OCL file
 >
 >     <constraintProvider
 > class=" org.eclipse.emf.validation.examples.ocl.OCLConstraintProvide r "
 >           category="Constraints from an OCL Document">
 >        <package
 > namespaceUri=" http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0"/>
 >
 >        <ocl path="constraints/Product_constraints.ocl"/>
 >     </constraintProvider>
 >
 > 10. Edit plugin.xml in org.eclipse.emf.validation.examples.ocl and
 > change the namespaceUri as noted below
 >
 >       *Delete
 >  http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0
 >       *Insert http://www.mycompany/product
 >
 > 11. Fix dependencies in org.eclipse.emf.validation.examples.general
 >     *Remove the following
 >     org.eclipse.emf.examples.library
 >     org.eclipse.emf.examples.library.edit
 >     org.eclipse.emf.examples.library.editor
 >
 >     *Insert the following
 >     myProduct
 >     myProduct.editor
 >     myProduct.edit
 >     myProduct.tests
 >
 > 12. Edit plugin.properties in org.eclipse.emf.validation.examples.general
 >     *Remove the following
 >     EXTLibraryConstraintsCategory=EXT Library Constraints
 >
 >     NonEmptyNameConstraint=Non-Empty Names
 >     NonEmptyNameConstraint.description=All items in an EXT library model
 >     should have some unique identifier or name.
 >
 >     # 0 - An EClass(metaclass) name for the element that was found to have
 >     no unique identifier.
 >     NonEmptyNameConstraint.message=A {0} has been found to have no unique
 >     identifier (name or title).
 >
 >     *Insert the following
 >     ProductConstraintsCategory=Product Constraints
 >
 > 13. Edit plugin.xml in org.eclipse.emf.validation.examples.general
 >     *Replace the first <extension/> with the following
 >
 >    <extension point="org.eclipse.ui.editorActions">
 >     <editorContribution
 > id=" org.eclipse.emf.validation.examples.general.editorContributi on "
 >        targetID="product.presentation.ProductEditorID">
 >        <menu
 >              label="%_UI_ValidationMenu_label"
 >              path="Product.ProductMenuID/additions"
 >              id="org.eclipse.emf.validationMenuID">
 >           <separator name="additions"/>
 >        </menu>
 >        <action
 >              label="%ValidateElementsAction.label"
 >              icon="$nl$/icons/elcl16/validate_co.gif"
 >
 > class=" org.eclipse.emf.validation.examples.general.actions.BatchVal idationDelegate "
 >
 >
 > menubarPath="ProductMenuID/org.eclipse.emf.validationMenuID/additions "
 >
 > id=" org.eclipse.emf.validation.pde.example.general.ui.validateAc tion "/>
 >        <action
 >              label="%EnableLiveValidationAction.label"
 >
 > class=" org.eclipse.emf.validation.examples.general.actions.EnableLi veValidationDelegate "
 >
 >
 > menubarPath="ProductMenuID/org.eclipse.emf.validationMenuID/additions "
 >
 > id=" org.eclipse.emf.validation.pde.example.general.ui.enableLive ValidationAction "/>
 >
 >       <action
 >             label="%ShowValidationEventsAction.label"
 >
 > class=" org.eclipse.emf.validation.examples.general.actions.ShowVali dationEventsDelegate "
 >
 >             style="toggle"
 >             state="false"
 >
 > menubarPath="ProductMenuID/org.eclipse.emf.validationMenuID/additions "
 >
 > id=" org.eclipse.emf.validation.pde.example.general.ui.showValida tionEventsAction "/>
 >
 >     </editorContribution>
 >  </extension>
 >  <extension point="org.eclipse.ui.popupMenus">
 >     <viewerContribution targetID="Product.presentation.ProductEditorID"
 > id=" org.eclipse.emf.validation.examples.general.viewerContributi on ">
 >        <menu
 >              label="%_UI_ValidationMenu_label"
 >              path="additions"
 >              id="org.eclipse.emf.validationMenuID">
 >           <separator name="additions"/>
 >        </menu>
 >        <action
 >              label="%ValidateElementsAction.label"
 >              icon="$nl$/icons/elcl16/validate_co.gif"
 > class=" org.eclipse.emf.validation.examples.general.actions.BatchVal idationDelegate "
 >
 >              menubarPath="org.eclipse.emf.validationMenuID/additions"
 >
 > id=" org.eclipse.emf.validation.pde.example.general.ui.validateAc tion "/>
 >        <action
 >           label="%EnableLiveValidationAction.label"
 > class=" org.eclipse.emf.validation.examples.general.actions.EnableLi veValidationDelegate "
 >
 >              menubarPath="org.eclipse.emf.validationMenuID/additions"
 >
 > id=" org.eclipse.emf.validation.pde.example.general.ui.enableLive ValidationAction "/>
 >
 >       <action
 >             label="%ShowValidationEventsAction.label"
 >
 > class=" org.eclipse.emf.validation.examples.general.actions.ShowVali dationEventsDelegate "
 >
 >             style="toggle"
 >             state="false"
 >             menubarPath="org.eclipse.emf.validationMenuID/additions"
 >
 > id=" org.eclipse.emf.validation.pde.example.general.ui.showValida tionEventsAction "/>
 >
 >     </viewerContribution>
 >  </extension>
 >
 > 14. Edit plugin.xml in org.eclipse.emf.validation.examples.general
 >     *Remove the following second <extension/>
 >
 > <extension point="org.eclipse.emf.validation.constraintProviders">
 >     <category
 >           name="%ProductConstraintsCategory"
 > id="org.eclipse.emf.validation.pde.example.general.ui.library "/>
 >     <constraintProvider cache="true">
 >        <package
 > namespaceUri=" http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0"/>
 >
 >        <constraints
 > categories="org.eclipse.emf.validation.pde.example.general.ui.library ">
 >           <constraint lang="Java"
 > class=" org.eclipse.emf.validation.examples.general.constraints.NonE mptyNamesConstraint "
 >
 >                 severity="ERROR"
 >                 mode="Live"
 >                 name="%NonEmptyNameConstraint"
 > id=" org.eclipse.emf.validation.pde.example.general.ui.NameNotEmp ty "
 >                 statusCode="1">
 >              <description>
 >                 %NonEmptyNameConstraint.description
 >              </description>
 >              <message>
 >                 %NonEmptyNameConstraint.message
 >              </message>
 >              <target class="Library">
 >                 <event name="Set">
 >                    <feature name="name"/>
 >                 </event>
 >                 <event name="Unset">
 >                    <feature name="name"/>
 >                 </event>
 >              </target>
 >              <target class="Book">
 >                 <event name="Set">
 >                    <feature name="title"/>
 >                 </event>
 >                 <event name="Unset">
 >                    <feature name="title"/>
 >                 </event>
 >              </target>
 >           </constraint>
 >        </constraints>
 >     </constraintProvider>
 >  </extension>
 >
 > 15. Edit the BatchValidationDeligate.java file in
 > org.eclipse.emf.validation.examples.general.actions
 > Change the following to reflect your model settings
 >     *Delete import
 >      org.eclipse.emf.examples.extlibrary.presentation.EXTLibraryE ditor;
 >
 >     *Insert import     Product.presentation.ProductEditor;
 >
 >     *Delete     protected EXTLibraryEditor editor = null;
 >
 >     *Insert     protected ProductEditor editor = null;
 >
 >     *Delete
 > public void setActiveEditor(IAction action, IEditorPart targetEditor) {
 >               this.editor = (EXTLibraryEditor) targetEditor;
 >               if ( targetEditor != null ) {
 >                       this.shell = targetEditor.getSite().getShell();
 >               }
 >       }
 >
 >     *Insert
 > public void setActiveEditor(IAction action, IEditorPart targetEditor) {
 >               this.editor = (ProductEditor) targetEditor;
 >               if ( targetEditor != null ) {
 >                       this.shell = targetEditor.getSite().getShell();
 >               }
 >       }
 >
 > 16. Edit the EnableLiveValidation.java file in
 > org.eclipse.emf.validation.examples.general.actions
 > Change the following to reflect your model settings
 >     *Delete import
 >      org.eclipse.emf.examples.extlibrary.presentation.EXTLibraryE ditor;
 >
 >     *Insert import     Product.presentation.ProductEditor;
 >
 >     *Delete     protected EXTLibraryEditor editor = null;
 >     *Insert     protected ProductEditor editor = null;
 >
 >     *Delete
 > public void setActiveEditor(IAction action, IEditorPart targetEditor) {
 >               this.editor = (EXTLibraryEditor) targetEditor;
 >               if ( targetEditor != null ) {
 >                       this.shell = targetEditor.getSite().getShell();
 >               }
 >       }
 >
 >     *Insert
 > public void setActiveEditor(IAction action, IEditorPart targetEditor) {
 >               this.editor = (ProductEditor) targetEditor;
 >               if ( targetEditor != null ) {
 >                       this.shell = targetEditor.getSite().getShell();
 >               }
 >       }
 >
 > 17. Edit the NonEmptyNamesConstraint.java file in
 > org.eclipse.emf.validation.examples.general.constraints
 >     *Delete this file
 >
 > 18. Fix dependencies in org.eclipse.emf.validation.examples.adaptor
 >     *Remove
 >     org.eclipse.emf.examples.library
 >
 >     *Insert
 >     myProduct
 >
 > 19. Edit Startup.java file in org.eclipse.emf.validation.examples.adapter
 >     *Delete     import
 > org.eclipse.emf.examples.extlibrary.EXTLibraryPackage;
 >     *Insert     import Product.ProductPackage;
 >
 >     *Delete
 >       public void earlyStartup() {
 >               EValidator.Registry.INSTANCE.put(
 >                       EXTLibraryPackage.eINSTANCE,
 >                       new EValidatorAdapter());
 >       }
 >
 >     *Insert
 >
 >       public void earlyStartup() {
 >               EValidator.Registry.INSTANCE.put(
 >                       ProductPackage.eINSTANCE,
 >                       new EValidatorAdapter());
 >       }
 >
 > 20. Edit plugin.properties file in
 > org.eclipse.emf.validation.examples.adapter
 >     *Remove     dependency org.eclipse.emf.examples.library
 >
 > 21. Edit plugin.xml file in org.eclipse.emf.validation.examples.adapter
 >     *Delete
 >
 >  <extension point="org.eclipse.emf.validation.constraintBindings">
 >     <clientContext id="org.eclipse.emf.validation.examples.adapter">
 >        <enablement>
 >           <and>
 >              <instanceof value="org.eclipse.emf.ecore.EObject"/>
 >              <test
 > property="org.eclipse.emf.validation.examples.adapter.ePackage "
 > value=" http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0"/>
 >           </and>
 >        </enablement>
 >     </clientContext>
 >
 >     <binding
 >        context="org.eclipse.emf.validation.examples.adapter"
 >        category="emf-validation-example"/>
 >  </extension>
 >
 >     *Insert
 >
 >  <extension point="org.eclipse.emf.validation.constraintBindings">
 >     <clientContext id="org.eclipse.emf.validation.examples.adapter">
 >        <enablement>
 >           <and>
 >              <instanceof value="org.eclipse.emf.ecore.EObject"/>
 >              <test
 > property="org.eclipse.emf.validation.examples.adapter.ePackage "
 > value="http://www.mycompany/product"/>
 >           </and>
 >        </enablement>
 >     </clientContext>
 >
 >     <binding
 >        context="org.eclipse.emf.validation.examples.adapter"
 >        category="emf-validation-example"/>
 >  </extension>
 >
 >     *Delete
 >
 >     <constraintProvider cache="true">
 >        <package
 > namespaceUri=" http:///org/eclipse/emf/examples/library/extlibrary.ecore/1. 0.0"/>
 >
 >
 >        <constraints categories="emf-validation-example/adapter">
 >           <constraint
 >                 lang="Java"
 >                 severity="INFO"
 >                 mode="Batch"
 >                 name="%example1.name"
 >                 id="example1"
 >                 statusCode="201"
 >
 > class=" org.eclipse.emf.validation.examples.adapter.constraints.Exam pleConstraint ">
 >
 >              <description>%example1.desc</description>
 >              <message>%example1.msg</message>
 >              <!-- This constraint applies to any library element. -->
 >              <target class="Library"/>
 >              <target class="Writer"/>
 >              <target class="Book"/>
 >           </constraint>
 >        </constraints>
 >     </constraintProvider>
 >
 >     *Insert
 >
 >     <constraintProvider cache="true">
 >        <package namespaceUri="http://www.mycompany/product"/>
 >
 >        <constraints categories="emf-validation-example/adapter">
 >           <constraint
 >                 lang="Java"
 >                 severity="INFO"
 >                 mode="Batch"
 >                 name="%example1.name"
 >                 id="example1"
 >                 statusCode="201"
 >
 > class=" org.eclipse.emf.validation.examples.adapter.constraints.Exam pleConstraint ">
 >
 >              <description>%example1.desc</description>
 >              <message>%example1.msg</message>
 >              <!-- This constraint applies to any library element. -->
 >              <target class="Library"/>
 >              <target class="Writer"/>
 >              <target class="Book"/>
 >           </constraint>
 >        </constraints>
 >     </constraintProvider>
 >
 > 22. Create a new Run Configuration so we can see the GEF editor for our
 > myModel.ecore
 > Run->Run->Run as Eclipse Application
 >
 > This operation will result in a new Eclipse workspace session starting.
 > This new workspace will have the GEF based editor and OCL example
 > plugins built into it.
 >
 > 23. In the new workspace do the following.
 > Create a new empty EMF project
 > File->New Project->Empty EMF Project
 > Project name: myProduct
 >
 > This will create a project to hold our instance model
 >
 > 24. In the new workspace do the following.
 > File->New->Example EMF Model Creation Wizards
 > Select Product Model
 > File name: my.Product
 >
 > 25. Create a model instance using the GEF editor
 >
 > 26. Validate the using the context menu (right click a model
 > element->Validation->Validate Elements... or simply right click a model
 > element->Validate)
 > 27. Be impressed :)
 >
 |  |  |  | 
|  | 
|  | 
|  | 
|  | 
Powered by 
FUDForum. Page generated in 0.04046 seconds