| 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.55360 seconds