[205478] Update existing getting started articles.
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article.html b/docs/articles/Introduction_to_UML2_Profiles/article.html
index 961779d..42f5017 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article.html
+++ b/docs/articles/Introduction_to_UML2_Profiles/article.html
@@ -34,19 +34,19 @@
<o:DocumentProperties>
<o:Author>khussey</o:Author>
<o:Template>Normal</o:Template>
- <o:LastAuthor>Kenn Hussey</o:LastAuthor>
- <o:Revision>164</o:Revision>
- <o:TotalTime>4670</o:TotalTime>
+ <o:LastAuthor>jbruck</o:LastAuthor>
+ <o:Revision>179</o:Revision>
+ <o:TotalTime>4753</o:TotalTime>
<o:Created>2004-10-25T17:54:00Z</o:Created>
- <o:LastSaved>2006-07-18T18:25:00Z</o:LastSaved>
- <o:Pages>16</o:Pages>
- <o:Words>8130</o:Words>
- <o:Characters>46343</o:Characters>
+ <o:LastSaved>2008-07-11T19:41:00Z</o:LastSaved>
+ <o:Pages>1</o:Pages>
+ <o:Words>8775</o:Words>
+ <o:Characters>50024</o:Characters>
<o:Company>Rational Software</o:Company>
- <o:Lines>386</o:Lines>
- <o:Paragraphs>108</o:Paragraphs>
- <o:CharactersWithSpaces>54365</o:CharactersWithSpaces>
- <o:Version>10.6735</o:Version>
+ <o:Lines>416</o:Lines>
+ <o:Paragraphs>117</o:Paragraphs>
+ <o:CharactersWithSpaces>58682</o:CharactersWithSpaces>
+ <o:Version>10.6830</o:Version>
</o:DocumentProperties>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
@@ -70,15 +70,22 @@
@font-face
{font-family:"MS Mincho";
panose-1:2 2 6 9 4 2 5 8 3 4;
- mso-font-alt:"\FF2D\FF33 \660E\671D";
+ mso-font-alt:"MS Mincho";
mso-font-charset:128;
mso-generic-font-family:modern;
mso-font-pitch:fixed;
mso-font-signature:-1610612033 1757936891 16 0 131231 0;}
@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:238;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
+@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
- mso-font-charset:0;
+ mso-font-charset:238;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:536871559 0 0 0 415 0;}
@@ -138,6 +145,15 @@
{color:purple;
text-decoration:underline;
text-underline:single;}
+p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
+ {mso-style-noshow:yes;
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ background:navy;
+ font-size:12.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
p
{mso-margin-top-alt:auto;
margin-right:0in;
@@ -188,6 +204,52 @@
mso-paper-source:0;}
div.Section1
{page:Section1;}
+ /* List Definitions */
+ @list l0
+ {mso-list-id:2098360590;
+ mso-list-type:hybrid;
+ mso-list-template-ids:-501428010 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
+@list l0:level1
+ {mso-level-text:"%1\)";
+ mso-level-tab-stop:.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level2
+ {mso-level-tab-stop:1.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level3
+ {mso-level-tab-stop:1.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level4
+ {mso-level-tab-stop:2.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level5
+ {mso-level-tab-stop:2.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level6
+ {mso-level-tab-stop:3.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level7
+ {mso-level-tab-stop:3.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level8
+ {mso-level-tab-stop:4.0in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+@list l0:level9
+ {mso-level-tab-stop:4.5in;
+ mso-level-number-position:left;
+ text-indent:-.25in;}
+ol
+ {margin-bottom:0in;}
+ul
+ {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 10]>
@@ -212,7 +274,7 @@
{margin-left:8.5pt;}
</style>
<![endif]><!--[if gte mso 9]><xml>
- <o:shapedefaults v:ext="edit" spidmax="9218"/>
+ <o:shapedefaults v:ext="edit" spidmax="10242"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
@@ -226,7 +288,7 @@
<p class=MsoNormal align=right style='text-align:right'><span style='font-size:
10.0pt;font-family:Arial'> </span><span style='font-size:10.0pt'>Copyright
-© 2004, 2006 International Business Machines Corp.</span><span
+© 2004, 2008 International Business Machines Corp.</span><span
style='font-size:10.0pt;font-family:Arial'> <o:p></o:p></span></p>
<div align=right>
@@ -259,7 +321,9 @@
editor<o:p></o:p></span></p>
<p><span class=SpellE><b>Kenn</b></span><b> Hussey, IBM</b><br>
-<st1:date Year="2006" Day="18" Month="7">July 18, 2006</st1:date></p>
+<st1:date Year="2006" Day="18" Month="7">July 18, 2006</st1:date> (Updated: <st1:date
+Year="2008" Day="11" Month="7">July 11, 2008</st1:date> for Eclipse 3.4; James <span
+class=SpellE>Bruck</span>)</p>
</blockquote>
@@ -272,28 +336,41 @@
<h2>Prerequisites</h2>
-<p>To work with UML2 profiles (and to follow along with the example in this
-article), you must have <span class=MsoHyperlink><a
-href="http://www.eclipse.org/downloads/index.php">Eclipse 3.2</a></span>, <span
-class=MsoHyperlink>EMF 2.2</span>, and <span class=MsoHyperlink>UML2 2.0</span>
-installed.</p>
+<p>To start using UML2 (and to follow along with the example in this article),
+you must have <span class=MsoHyperlink><a
+href="http://download.eclipse.org/eclipse/downloads/">Eclipse 3.4</a></span>, <span
+class=MsoHyperlink><a
+href="http://www.eclipse.org/modeling/emf/downloads/?project=emf">EMF 2.4</a></span>,
+and <span class=MsoHyperlink><a
+href="http://www.eclipse.org/modeling/mdt/downloads/?project=uml2">UML2 2.2</a></span>
+installed.<span style='mso-spacerun:yes'> </span></p>
-<h2>Introduction</h2>
+<p>You can either download the zips individually and expand them out or follow
+the steps below:<span style='mso-spacerun:yes'> </span></p>
-<p>This article will walk you through the basics of creating and applying
-profiles using UML2. Using a subset of the <span class=SpellE>Ecore</span>
-profile (see below) and the model we described in the Getting Started with
-UML2 article [1] (the ExtendedPO2 model, shamelessly borrowed from the EMF
-bible [2]) as an example, well look at whats involved in creating some of
-the more common elements that make up a profile. For each type of element,
-well first explain the creation process using the sample UML editor and
-explore how to accomplish the same thing using Java code. Then well look at
-whats involved in applying profiles and stereotypes to models. The ExtendedPO2
-model is shown below.</p>
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>1)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Download and run Eclipse 3.4</span></p>
-<p><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
- o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
- stroked="f">
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>2)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Select the <b>Help</b> > <b>Software
+Updates
</b>menu</span></p>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>3)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Select the <b>Available Software</b> tab and
+expand the <b>Ganymede\Model and Model Development</b> tree item.</span></p>
+
+<p style='margin-left:.25in'><!--[if gte vml 1]><v:shapetype id="_x0000_t75"
+ coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
+ filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
@@ -311,11 +388,47 @@
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
-</v:shapetype><v:shape id="_x0000_i1142" type="#_x0000_t75" style='width:581.25pt;
+</v:shapetype><v:shape id="_x0000_i1128" type="#_x0000_t75" style='width:581.25pt;
+ height:408.75pt'>
+ <v:imagedata src="article_files/image037.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=775 height=545
+src="article_files/image038.jpg" v:shapes="_x0000_i1128"><![endif]></p>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>4)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Select <b>UML2 End-User Features</b> and <b>UML2
+Extender SDK</b>.<span style='mso-spacerun:yes'> </span>The version should
+indicate 2.2.0 (or later).</span></p>
+
+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1;
+tab-stops:list .5in'><![if !supportLists]><span style='mso-fareast-font-family:
+Arial'><span style='mso-list:Ignore'>5)<span style='font:7.0pt "Times New Roman"'>
+</span></span></span><![endif]><span dir=LTR><span
+style='mso-spacerun:yes'> </span>Click <b>Install<span class=GramE>
<span
+style='font-weight:normal'>.</span></span></b></span></p>
+
+<p>At this stage, UML2 2.2 and all dependencies should be installed.</p>
+
+<h2>Introduction</h2>
+
+<p>This article will walk you through the basics of creating and applying
+profiles using UML2. Using a subset of the <span class=SpellE>Ecore</span>
+profile (see below) and the model we described in the Getting Started with
+UML2 article [1] (the ExtendedPO2 model, shamelessly borrowed from the EMF
+bible [2]) as an example, well look at whats involved in creating some of
+the more common elements that make up a profile. For each type of element,
+well first explain the creation process using the sample UML editor and
+explore how to accomplish the same thing using Java code. Then well look at
+whats involved in applying profiles and stereotypes to models. The ExtendedPO2
+model is shown below.</p>
+
+<p><!--[if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:581.25pt;
height:407.25pt'>
- <v:imagedata src="article_files/image001.emz" o:title=""/>
+ <v:imagedata src="article_files/image039.emz" o:title=""/>
</v:shape><![endif]--><![if !vml]><img border=0 width=775 height=543
-src="article_files/image002.gif" v:shapes="_x0000_i1142"><![endif]><o:p></o:p></p>
+src="article_files/image002.gif" v:shapes="_x0000_i1027"><![endif]></p>
<p>As described in the EMF book, some of the attributes of certain <span
class=SpellE>Ecore</span> elements cannot be expressed directly in UML. EMF
@@ -329,22 +442,22 @@
stereotype that extends the <span style='font-family:"Courier New"'>Property</span>
<span class=SpellE>metaclass</span>.</p>
-<p><!--[if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:258pt;
+<p><!--[if gte vml 1]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:258pt;
height:306.75pt'>
<v:imagedata src="article_files/image003.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img border=0 width=344 height=409
-src="article_files/image004.jpg" v:shapes="_x0000_i1027"><![endif]></p>
+src="article_files/image004.jpg" v:shapes="_x0000_i1028"><![endif]></p>
<p>The <span class=SpellE>Ecore</span> properties for association ends are
shown below. These properties can also be expressed in UML2 as properties owned
by a stereotype that extends the <span style='font-family:"Courier New"'>Property</span>
<span class=SpellE>metaclass</span>.</p>
-<p><!--[if gte vml 1]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:258pt;
+<p><!--[if gte vml 1]><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:258pt;
height:320.25pt'>
<v:imagedata src="article_files/image005.png" o:title=""/>
</v:shape><![endif]--><![if !vml]><img border=0 width=344 height=427
-src="article_files/image006.jpg" v:shapes="_x0000_i1028"><![endif]></p>
+src="article_files/image006.jpg" v:shapes="_x0000_i1029"><![endif]></p>
<h2>Getting Started</h2>
@@ -370,11 +483,11 @@
<p>At this point your workspace should look something like this:</p>
-<p><!--[if gte vml 1]><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:960pt;
- height:768pt'>
- <v:imagedata src="article_files/image007.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image008.jpg" v:shapes="_x0000_i1029"><![endif]></p>
+<p><!--[if gte vml 1]><v:shape id="_x0000_i1129" type="#_x0000_t75" style='width:624pt;
+ height:405.75pt'>
+ <v:imagedata src="article_files/image001.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=832 height=541
+src="article_files/image040.jpg" v:shapes="_x0000_i1129"><![endif]></p>
<p>OK, that should be enough to get us going with the UML editor. Now, to
follow along with the programmatic approach to creating profiles, well assume
@@ -392,25 +505,25 @@
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>if</span> (DEBUG) {</pre><pre
style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1031"
-src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:3'> </span><span
-class=SpellE><span class=GramE>System.out.println</span></span><span
+src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:
+3'> </span><span class=SpellE><span class=GramE>System.out.println</span></span><span
class=GramE>(</span>output);</pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span>}</pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:1'> </span>}</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static void err(String error) {</pre><pre
style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1032"
-src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:2'> </span><span
-class=SpellE><span class=GramE>System.err.println</span></span><span
+src="../../../../images/tag_3.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=SpellE><span class=GramE>System.err.println</span></span><span
class=GramE>(</span>error);</pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>A
static debug flag <img border=0 width=24 height=14 id="_x0000_i1033"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>can be used to enable or disable verbose
-information printed to the systems output <span class=GramE>stream </span><img
-border=0 width=24 height=14 id="_x0000_i1034" src="../../../../images/tag_2.gif"
+style='mso-spacerun:yes'> </span>can be used to enable or disable verbose information
+printed to the systems output <span class=GramE>stream </span><img border=0
+width=24 height=14 id="_x0000_i1034" src="../../../../images/tag_2.gif"
align=CENTER>. Errors will always be printed to the systems error <span
class=GramE>stream </span><img border=0 width=24 height=14 id="_x0000_i1035"
src="../../../../images/tag_3.gif" align=CENTER>.</p>
@@ -433,8 +546,8 @@
editor, follow these steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
-Select a project (i.e. <b>Introduction to UML2 Profiles</b>) in the <b>Navigator</b>
-view and select the <b>File > New > <span class=GramE>Other</span>...</b>
+Select a project (i.e. <b>Introduction to UML2 Profiles</b>) in the <b>Project
+Explorer</b> view and select the <b>File > New > <span class=GramE>Other</span>...</b>
menu item.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
@@ -468,44 +581,46 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1037" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image009.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image010.jpg" v:shapes="_x0000_i1037"><![endif]></p>
+ id="_x0000_i1130" type="#_x0000_t75" style='width:624pt;height:405.75pt'>
+ <v:imagedata src="article_files/image041.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=832 height=541
+src="article_files/image042.jpg" v:shapes="_x0000_i1130"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
-shows a method that programmatically creates and returns a profile with a specified
-name.</p>
+shows a method that programmatically creates and returns a profile with a
+specified name.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static Profile <span class=SpellE>createProfile</span>(String name) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1038"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Profile <span
-class=SpellE>profile</span> = <span class=SpellE><span class=GramE>UMLFactory.eINSTANCE.createProfile</span></span><span
+style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1037"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Profile <span class=SpellE>profile</span> = <span
+class=SpellE><span class=GramE>UMLFactory.eINSTANCE.createProfile</span></span><span
class=GramE>(</span>);</pre><pre style='margin-left:9.0pt'><img border=0
-width=24 height=14 id="_x0000_i1039" src="../../../../images/tag_2.gif"
+width=24 height=14 id="_x0000_i1038" src="../../../../images/tag_2.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=SpellE><span
class=GramE>profile.setName</span></span><span class=GramE>(</span>name);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=14 id="_x0000_i1040" src="../../../../images/tag_3.gif"
+border=0 width=24 height=14 id="_x0000_i1039" src="../../../../images/tag_3.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Profile '" + <span
class=SpellE>profile.getQualifiedName</span>() + "' created.");</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=14 id="_x0000_i1041" src="../../../../images/tag_4.gif"
-align=CENTER><span style='mso-tab-count:2'> </span><span class=GramE>return</span> profile;</pre><pre
+border=0 width=24 height=14 id="_x0000_i1040" src="../../../../images/tag_4.gif"
+align=CENTER><span style='mso-tab-count:1'> </span><span style='mso-tab-count:
+1'> </span><span class=GramE>return</span> profile;</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>First,
we ask the UML factory singleton <img border=0 width=24 height=14
-id="_x0000_i1042" src="../../../../images/tag_1.gif" align=CENTER><span
+id="_x0000_i1041" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to create a profile, and we set its <span
-class=GramE>name </span><img border=0 width=24 height=14 id="_x0000_i1043"
+class=GramE>name </span><img border=0 width=24 height=14 id="_x0000_i1042"
src="../../../../images/tag_2.gif" align=CENTER>. Then, we output information <img
-border=0 width=24 height=14 id="_x0000_i1044" src="../../../../images/tag_3.gif"
+border=0 width=24 height=14 id="_x0000_i1043" src="../../../../images/tag_3.gif"
align=CENTER><span style='mso-spacerun:yes'> </span>to the user to let them
know that the profile has been successfully created. Finally, we return <img
-border=0 width=24 height=14 id="_x0000_i1045" src="../../../../images/tag_4.gif"
+border=0 width=24 height=14 id="_x0000_i1044" src="../../../../images/tag_4.gif"
align=CENTER><span style='mso-spacerun:yes'> </span>the profile. Youll notice
most, if not all, of the code snippets in this article will follow this pattern
create the element (and set some properties on it), inform the user, and
@@ -540,7 +655,7 @@
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
Select the <b style='mso-bidi-font-weight:normal'>UML Editor > Package >
-Import Primitive Type
</b> menu item.</p>
+Import Type
</b> menu item.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
Choose a primitive type (i.e. <span class=SpellE><b style='mso-bidi-font-weight:
@@ -549,7 +664,7 @@
style='mso-bidi-font-weight:normal'>OK</b> button.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1046" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1045" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Import the other required primitive type (<span
class=SpellE><b style='mso-bidi-font-weight:normal'>UMLPrimitiveTypes::String</b></span>)
into the <span class=SpellE>Ecore</span> profile using the UML editor.</p>
@@ -558,10 +673,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1047" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image011.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image012.jpg" v:shapes="_x0000_i1047"><![endif]></p>
+ id="_x0000_i1131" type="#_x0000_t75" style='width:624pt;height:405.75pt'>
+ <v:imagedata src="article_files/image007.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=832 height=541
+src="article_files/image008.jpg" v:shapes="_x0000_i1131"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -573,21 +688,22 @@
class=GramE>protected</span> static <span class=SpellE>PrimitiveType</span> <span
class=SpellE>importPrimitiveType</span>(</pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:3'> </span>org.eclipse.uml2.uml.Package package_, String name) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1048"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Model <span
-class=SpellE>umlLibrary</span> = (Model) <span class=GramE>load(</span>URI</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
-class=SpellE><span class=GramE>createURI</span></span><span class=GramE>(</span><span
+style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1046"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Model <span class=SpellE>umlLibrary</span> = (Model) <span
+class=GramE>load(</span>URI</pre><pre style='margin-left:9.0pt'><span
+style='mso-tab-count:3'> </span>.<span class=SpellE><span
+class=GramE>createURI</span></span><span class=GramE>(</span><span
class=SpellE>UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI</span>));</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=14 id="_x0000_i1049" src="../../../../images/tag_2.gif"
+border=0 width=24 height=14 id="_x0000_i1047" src="../../../../images/tag_2.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=SpellE>PrimitiveType</span> <span
class=SpellE>primitiveType</span> = (<span class=SpellE>PrimitiveType</span>) <span
class=SpellE>umlLibrary</span></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:3'> </span>.<span class=SpellE><span
class=GramE>getOwnedType</span></span><span class=GramE>(</span>name);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=14 id="_x0000_i1050" src="../../../../images/tag_3.gif"
+border=0 width=24 height=14 id="_x0000_i1048" src="../../../../images/tag_3.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=SpellE>package_.<span
class=GramE>createElementImport</span></span><span class=GramE>(</span><span
class=SpellE>primitiveType</span>);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
@@ -600,7 +716,7 @@
style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
-we load the model library <img border=0 width=24 height=14 id="_x0000_i1051"
+we load the model library <img border=0 width=24 height=14 id="_x0000_i1049"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>containing the UML primitive types (<span
style='font-family:"Courier New"'>Boolean</span>, <span style='font-family:
@@ -609,17 +725,17 @@
using a utility method (described later) and a URI defined on the <span
class=SpellE><span style='font-family:"Courier New"'>UMLResource</span></span>
interface. Next, we retrieve the desired (owned) primitive type from the model
-by name <img border=0 width=24 height=14 id="_x0000_i1052"
+by name <img border=0 width=24 height=14 id="_x0000_i1050"
src="../../../../images/tag_2.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>using one of the convenience methods defined
in the UML2 API. Finally, we invoke another convenience method <img border=0
-width=24 height=14 id="_x0000_i1053" src="../../../../images/tag_3.gif"
+width=24 height=14 id="_x0000_i1051" src="../../../../images/tag_3.gif"
align=CENTER><span style='mso-spacerun:yes'> </span>to create the element
import relationship between the package and the element (with default public
visibility), notify the user, and return the primitive type.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1054" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1052" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>The UML resources plug-in (<span
style='font-family:"Courier New"'>org.eclipse.uml2.uml.resources</span>)
provides several model libraries (which by convention have a <code>.<span
@@ -631,7 +747,7 @@
above.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=63 height=14 id="_x0000_i1055" src="../../../../images/tip.gif"><span
+border=0 width=63 height=14 id="_x0000_i1053" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>In UML2, a method of the form <code>get<feature
name<span class=GramE>>(</span>String)</code> exists for every feature that
can contain or reference named elements. In this case, the package has a
@@ -653,7 +769,7 @@
style='margin-left:8.5pt'><span style='mso-tab-count:3'> </span>"Boolean");</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1056" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1054" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically import the
other required primitive type (i.e. String) into the <span class=SpellE>Ecore</span>
profile.</p>
@@ -672,7 +788,7 @@
in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Packaged Element Enumeration</b>
+Right-click and select the <b>New Child > Packaged Element > Enumeration</b>
option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
@@ -680,7 +796,7 @@
property in the <b>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1057" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1055" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the other enumeration (i.e. <span
class=SpellE>FeatureKind</span>) for the <span class=SpellE>Ecore</span>
profile using the UML editor.</p>
@@ -689,10 +805,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1058" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image013.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image014.jpg" v:shapes="_x0000_i1058"><![endif]></p>
+ id="_x0000_i1132" type="#_x0000_t75" style='width:624pt;height:405.75pt'>
+ <v:imagedata src="article_files/image009.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=832 height=541
+src="article_files/image010.jpg" v:shapes="_x0000_i1132"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -703,9 +819,9 @@
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static Enumeration <span class=SpellE>createEnumeration</span>(</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>org.eclipse.uml2.uml.Package package_, String name) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1059"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Enumeration <span
-class=SpellE>enumeration</span> = (Enumeration) package_</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1056"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Enumeration <span class=SpellE>enumeration</span> = (Enumeration) package_</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
class=SpellE><span class=GramE>createOwnedEnumeraton</span></span><span
class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
@@ -718,10 +834,10 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call the <span class=SpellE><span class=GramE><code>createOwnedEnumeration</code></span></span><span
class=GramE><code>(</code></span><code>String)</code> convenience factory
-method <img border=0 width=24 height=13 id="_x0000_i1060"
+method <img border=0 width=24 height=13 id="_x0000_i1057"
src="../../../../images/tag_1.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to ask the package to create a primitive type
-with the specified name as one of its packaged elements.</p>
+style='mso-spacerun:yes'> </span>to ask the package to create a primitive type with
+the specified name as one of its packaged elements.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create an enumeration
@@ -736,7 +852,7 @@
class=SpellE>VisibilityKind</span>");</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1061" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1058" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
other enumeration (i.e. <span class=SpellE>FeatureKind</span>) for the <span
class=SpellE>Ecore</span> profile.</p>
@@ -754,15 +870,15 @@
in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Enumeration Literal</b> option
-from the context menu.</p>
+Right-click and select the <b>New Child > Owned Literal > Enumeration
+Literal</b> option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
Enter a value (i.e. Unspecified) for the <b>Name</b> property in the <b>Properties</b>
view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1062" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1059" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining enumeration literals for
the <span class=SpellE>Ecore</span> profile (i.e. None, <span class=SpellE>ReadOnly</span>,
<span class=SpellE>ReadWrite</span>, <span class=SpellE>ReadOnlyUnsettable</span>,
@@ -778,10 +894,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1063" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image015.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image016.jpg" v:shapes="_x0000_i1063"><![endif]></p>
+ id="_x0000_i1133" type="#_x0000_t75" style='width:696pt;height:607.5pt'>
+ <v:imagedata src="article_files/image011.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
+src="article_files/image012.jpg" v:shapes="_x0000_i1133"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -794,9 +910,10 @@
class=SpellE>createEnumerationLiteral</span>(</pre><pre style='margin-left:
9.0pt'><span style='mso-tab-count:3'> </span>Enumeration <span
class=SpellE>enumeration</span>, String name) {</pre><pre style='margin-left:
-9.0pt'><img border=0 width=24 height=13 id="_x0000_i1064"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span><span
-class=SpellE>EnumerationLiteral</span> <span class=SpellE>enumerationLiteral</span> = enumeration</pre><pre
+9.0pt'><img border=0 width=24 height=13 id="_x0000_i1060"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=SpellE>EnumerationLiteral</span> <span
+class=SpellE>enumerationLiteral</span> = enumeration</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
class=SpellE><span class=GramE>createOwnedLiteral</span></span><span
class=GramE>(</span>name);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
@@ -811,14 +928,14 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call the <span class=SpellE><span class=GramE><code>createOwnedLiteral</code></span></span><span
class=GramE><code>(</code></span><code>String)</code> convenience factory
-method <img border=0 width=24 height=13 id="_x0000_i1065"
+method <img border=0 width=24 height=13 id="_x0000_i1061"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to ask the enumeration to create an
enumeration literal with the specified name as one of its owned literals.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
-lets see this method in action. For example, we could create an enumeration literal
-named Unspecified in enumeration <span class=SpellE>VisibilityKind</span>
+lets see this method in action. For example, we could create an enumeration
+literal named Unspecified in enumeration <span class=SpellE>VisibilityKind</span>
as follows:</p>
<pre style='margin-left:8.5pt'><span style='mso-tab-count:2'> </span><span
@@ -828,7 +945,7 @@
style='mso-tab-count:2'> </span></pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1066" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1062" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining enumeration literals (i.e. None, <span class=SpellE>ReadOnly</span>,
<span class=SpellE>ReadWrite</span>, <span class=SpellE>ReadOnlyUnsettable</span>,
@@ -855,7 +972,7 @@
in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Packaged Element Stereotype</b>
+Right-click and select the <b>New Child > Packaged Element > Stereotype</b>
option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
@@ -868,7 +985,7 @@
property in the <b style='mso-bidi-font-weight:normal'>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1067" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1063" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining stereotypes for the <span
class=SpellE>Ecore</span> profile (i.e. <span class=SpellE>EAttribute</span>
and <span class=SpellE>EReference</span>) using the UML editor.</p>
@@ -877,10 +994,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1068" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image017.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image018.jpg" v:shapes="_x0000_i1068"><![endif]></p>
+ id="_x0000_i1134" type="#_x0000_t75" style='width:696pt;height:607.5pt'>
+ <v:imagedata src="article_files/image013.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
+src="article_files/image014.jpg" v:shapes="_x0000_i1134"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -892,9 +1009,10 @@
class=SpellE>profile</span>, String name,</pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:3'> </span><span class=SpellE><span
class=GramE>boolean</span></span> <span class=SpellE>isAbstract</span>) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1069"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Stereotype <span
-class=SpellE>stereotype</span> = <span class=SpellE><span class=GramE>profile.createOwnedStereotype</span></span><span
+style='margin-left:9.0pt'><img border=0 width=24 height=14 id="_x0000_i1064"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Stereotype <span class=SpellE>stereotype</span> = <span
+class=SpellE><span class=GramE>profile.createOwnedStereotype</span></span><span
class=GramE>(</span>name, <span class=SpellE>isAbstract</span>);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Stereotype '" + <span
@@ -906,7 +1024,7 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call the <span class=SpellE><span class=GramE><code>createOwnedStereotype</code></span></span><span
class=GramE><code>(</code></span><code>String, <span class=SpellE>boolean</span>)</code>
-convenience factory method <img border=0 width=24 height=13 id="_x0000_i1070"
+convenience factory method <img border=0 width=24 height=13 id="_x0000_i1065"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to ask the profile to create a stereotype with
the specified name as one of its owned members, and set the <span class=SpellE><code>isAbstract</code></span>
@@ -926,7 +1044,7 @@
class=SpellE>EStructuralFeature</span>", true);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1071" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1066" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining (non-abstract) stereotypes (i.e. <span class=SpellE>EAttribute</span>
and <span class=SpellE>EReference</span>) for the <span class=SpellE>Ecore</span>
@@ -937,9 +1055,9 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Just
like classes, stereotypes may be involved in generalizations. A generalization
-is a taxonomic relationship between a specific classifier and a more general classifier
-whereby each instance of the specific classifier is also an indirect instance
-of, and inherits the features of, the general classifier. To create a
+is a taxonomic relationship between a specific classifier and a more general
+classifier whereby each instance of the specific classifier is also an indirect
+instance of, and inherits the features of, the general classifier. To create a
stereotype generalization using the UML editor, follow these steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
@@ -948,22 +1066,22 @@
in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Generalization</b> option from the
-context menu.</p>
+Right-click and select the <b>New Child > Generalization > Generalization</b>
+option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
Select a value (i.e. <span class=SpellE><b>ecore::EStructuralFeature</b></span>)
for the <b>General</b> property in the <b>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1072" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1067" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the other generalization (i.e. between <span
class=SpellE><b style='mso-bidi-font-weight:normal'>EReference</b></span> and <span
class=SpellE><b style='mso-bidi-font-weight:normal'>EStructuralFeature</b></span>)
for the <span class=SpellE>Ecore</span> profile using the UML editor.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1073" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1068" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>Be sure to pick the stereotype (the first <span
class=SpellE><b style='mso-bidi-font-weight:normal'>ecore::EStructuralFeature</b></span>
item) and not the class (it should show up in <b style='mso-bidi-font-weight:
@@ -976,10 +1094,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1074" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image019.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image020.jpg" v:shapes="_x0000_i1074"><![endif]></p>
+ id="_x0000_i1135" type="#_x0000_t75" style='width:696pt;height:607.5pt'>
+ <v:imagedata src="article_files/image015.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
+src="article_files/image016.jpg" v:shapes="_x0000_i1135"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -993,23 +1111,23 @@
class=SpellE>specificClassifier</span>, Classifier <span class=SpellE>generalClassifier</span>) {</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>Generalization <span
class=SpellE>generalization</span> = <span class=SpellE>specificClassifier</span></pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1075"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:3'> </span>.<span
-class=SpellE><span class=GramE>createGeneralization</span></span><span
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1069"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+3'> </span>.<span class=SpellE><span class=GramE>createGeneralization</span></span><span
class=GramE>(</span><span class=SpellE>generalClassifier</span>);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Generalization " + <span
class=SpellE>specificClassifier.getQualifiedName</span>() + " ->> "</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
-style='mso-tab-count:2'> </span>+ <span class=SpellE><span
-class=GramE>generalClassifier.getQualifiedName</span></span><span class=GramE>(</span>) + " created.");</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>+ <span
+class=SpellE><span class=GramE>generalClassifier.getQualifiedName</span></span><span
+class=GramE>(</span>) + " created.");</pre><pre style='margin-left:
+9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>return</span> generalization;</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience factory method on the specific classifier that creates a
-generalization <img border=0 width=24 height=13 id="_x0000_i1076"
+generalization <img border=0 width=24 height=13 id="_x0000_i1070"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>as one of its children and sets the general
classifier to the specified argument.</p>
@@ -1026,7 +1144,7 @@
class=GramE>eStructuralFeatureStereotype</span></span>);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1077" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1071" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
other generalization (i.e. between <span class=SpellE>EReference</span> and <span
class=SpellE>EStructuralFeature</span>) for the <span class=SpellE>Ecore</span>
@@ -1047,8 +1165,8 @@
in the UML editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Right-click and select the <b>New Child > Property</b> option from the
-context menu.</p>
+Right-click and select the <b>New Child > Owned Attribute > Property</b>
+option from the context menu.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>3)
Enter a value (i.e. "<span class=SpellE>isTransient</span>) for the <b>Name</b>
@@ -1072,7 +1190,7 @@
> Default Value Literal Boolean</b> option from the context menu.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1078" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1072" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>Default values for properties (and parameters)
are represented as value specifications (first-class objects) in UML 2.0. Here
we have selected a literal Boolean (whose default value is <span
@@ -1085,7 +1203,7 @@
the <b style='mso-bidi-font-weight:normal'>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1079" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1073" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the remaining stereotype properties for
the <span class=SpellE>Ecore</span> profile (i.e. <span class=SpellE>isUnsettable</span>,
<span class=SpellE>isVolatile</span>, visibility, <span class=SpellE>xmlName</span>,
@@ -1099,9 +1217,9 @@
UML editor.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1080" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>Be sure to set the appropriate default value for
-each stereotype property so that it is consistent with the corresponding <span
+border=0 width=62 height=13 id="_x0000_i1074" src="../../../../images/tip.gif"><span
+style='mso-spacerun:yes'> </span>Be sure to set the appropriate default value
+for each stereotype property so that it is consistent with the corresponding <span
class=SpellE>Ecore</span> property for Rose. In particular, the default value
for the <span class=SpellE>isResolveProxies</span> should be a literal
Boolean with a value of <b style='mso-bidi-font-weight:normal'>true</b> instead
@@ -1117,28 +1235,28 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1081" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image021.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image022.jpg" v:shapes="_x0000_i1081"><![endif]></p>
+ id="_x0000_i1136" type="#_x0000_t75" style='width:696pt;height:607.5pt'>
+ <v:imagedata src="article_files/image017.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
+src="article_files/image018.jpg" v:shapes="_x0000_i1136"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
(from the <span style='font-family:"Courier New"'>GettingStartedWithUML2</span>
-class) shows a method that programmatically creates and returns an attribute
-with a specified upper bound, lower bound, type, and name in a specified class.</p>
+class) shows a method that programmatically creates and returns an attribute with
+a specified upper bound, lower bound, type, and name in a specified class.</p>
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static Property <span class=SpellE>createAttribute</span>(org.eclipse.uml2.uml.Class class_,</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>String name, Type <span
class=SpellE>type</span>, <span class=SpellE>int</span> <span class=SpellE>lowerBound</span>, <span
class=SpellE>int</span> <span class=SpellE>upperBound</span>) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1082"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Property attribute = <span
-class=SpellE>class_.<span class=GramE>createOwnedAttribute</span></span><span
-class=GramE>(</span>name, type,</pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:3'> </span><span class=SpellE><span
-class=GramE>lowerBound</span></span>, <span class=SpellE>upperBound</span>);</pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1075"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Property attribute = <span class=SpellE>class_.<span
+class=GramE>createOwnedAttribute</span></span><span class=GramE>(</span>name, type,</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+class=SpellE><span class=GramE>lowerBound</span></span>, <span class=SpellE>upperBound</span>);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=SpellE>StringBuffer</span> <span
class=SpellE>sb</span> = new <span class=SpellE><span class=GramE>StringBuffer</span></span><span
@@ -1186,7 +1304,7 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call the <span class=SpellE><code>createOwnedAttribute</code></span><code>(String,
Type, <span class=SpellE>int</span>, <span class=SpellE>int</span>)</code>
-convenience factory method <img border=0 width=24 height=13 id="_x0000_i1083"
+convenience factory method <img border=0 width=24 height=13 id="_x0000_i1076"
src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to ask the class to create a property as one
of its owned attributes, set the type of the attribute to the specified type,
@@ -1195,7 +1313,7 @@
value to the specified integer value).</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1084" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1077" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>The <span class=SpellE><code>LiteralUnlimitedNatural.UNLIMITED</code></span>
constant represents the unlimited value for upper bounds (-1), as it does in
EMF.</p>
@@ -1214,7 +1332,7 @@
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>0, 1);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1085" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1078" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
remaining stereotype properties (i.e. <span class=SpellE>isUnsettable</span>,
<span class=SpellE>isVolatile</span>, visibility, <span class=SpellE>xmlName</span>,
@@ -1259,10 +1377,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1086" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image023.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image024.jpg" v:shapes="_x0000_i1086"><![endif]></p>
+ id="_x0000_i1137" type="#_x0000_t75" style='width:696pt;height:607.5pt'>
+ <v:imagedata src="article_files/image019.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
+src="article_files/image020.jpg" v:shapes="_x0000_i1137"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
@@ -1273,21 +1391,22 @@
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static org.eclipse.uml2.uml.Class <span
class=SpellE>referenceMetaclass</span>(Profile <span class=SpellE>profile</span>,</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>String name) {</pre><pre
-style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1087"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Model <span
-class=SpellE>umlMetamodel</span> = (Model) <span class=GramE>load(</span>URI</pre><pre
-style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span>.<span
-class=SpellE><span class=GramE>createURI</span></span><span class=GramE>(</span>UML2Resource.UML2_METAMODEL_URI));</pre><pre
+style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
+lang=IT style='mso-ansi-language:IT'>String name) {<o:p></o:p></span></pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1079"
+src="../../../../images/tag_1.gif" align=CENTER><span lang=IT style='mso-ansi-language:
+IT'><span style='mso-tab-count:2'> </span>Model umlMetamodel = (Model) load(URI<o:p></o:p></span></pre><pre
+style='margin-left:9.0pt'><span lang=IT style='mso-ansi-language:IT'><span
+style='mso-tab-count:3'> </span>.createURI(UML2Resource.UML2_METAMODEL_URI));<o:p></o:p></span></pre><pre
+style='margin-left:9.0pt'><span lang=IT style='mso-ansi-language:IT'><o:p> </o:p></span></pre><pre
+style='margin-left:9.0pt'><img border=0 width=24 height=13 id="_x0000_i1080"
+src="../../../../images/tag_2.gif" align=CENTER><span lang=IT style='mso-ansi-language:
+IT'><span style='mso-tab-count:2'> </span>org.eclipse.uml2.Class metaclass = (org.eclipse.uml2.uml.Class) umlMetamodel<o:p></o:p></span></pre><pre
+style='margin-left:9.0pt'><span lang=IT style='mso-ansi-language:IT'><span
+style='mso-tab-count:3'> </span></span>.<span class=SpellE><span
+class=GramE>getOwnedType</span></span><span class=GramE>(</span>name);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=13 id="_x0000_i1088" src="../../../../images/tag_2.gif"
-align=CENTER><span style='mso-tab-count:2'> </span><span class=GramE>org.eclipse.uml2.Class</span> <span
-class=SpellE>metaclass</span> = (org.eclipse.uml2.uml.Class) <span
-class=SpellE>umlMetamodel</span></pre><pre style='margin-left:9.0pt'><span
-style='mso-tab-count:2'> </span><span style='mso-tab-count:1'> </span>.<span
-class=SpellE><span class=GramE>getOwnedType</span></span><span class=GramE>(</span>name);</pre><pre
-style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=13 id="_x0000_i1089" src="../../../../images/tag_3.gif"
+border=0 width=24 height=13 id="_x0000_i1081" src="../../../../images/tag_3.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=SpellE><span
class=GramE>profile.createMetaclassReference</span></span><span class=GramE>(</span><span
class=SpellE>metaclass</span>);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
@@ -1301,22 +1420,22 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we load the <span class=SpellE>metamodel</span> <img border=0 width=24
-height=14 id="_x0000_i1090" src="../../../../images/tag_1.gif" align=CENTER><span
+height=14 id="_x0000_i1082" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>containing the UML <span class=SpellE>metaclasses</span>
using a utility method (described later) and a URI defined on the <span
class=SpellE><span style='font-family:"Courier New"'>UMLResource</span></span>
interface. Next, we retrieve the desired (owned) <span class=SpellE>metaclass</span>
from the (meta<span class=GramE>)model</span> by name <img border=0 width=24
-height=14 id="_x0000_i1091" src="../../../../images/tag_2.gif" align=CENTER><span
+height=14 id="_x0000_i1083" src="../../../../images/tag_2.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>using the convenience method. Finally, we
invoke another convenience method <img border=0 width=24 height=14
-id="_x0000_i1092" src="../../../../images/tag_3.gif" align=CENTER><span
+id="_x0000_i1084" src="../../../../images/tag_3.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to create the element import relationship
between the profile and the <span class=SpellE>metaclass</span>, notify the
user, and return the <span class=SpellE>metaclass</span>.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1093" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1085" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>The UML resources plug-in (<span
style='font-family:"Courier New"'>org.eclipse.uml2.uml.resources</span>)
provides two <span class=SpellE>metamodels</span> (which by convention have a <code>.<span
@@ -1342,11 +1461,11 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Extensions
are used to indicate that the properties of <span class=SpellE>metaclasses</span>
-are extended through stereotypes, and give the ability to flexibly apply (and
-later <span class=SpellE>unapply</span>) stereotypes to elements. An extension
-is a kind of association, one end of which is an ordinary property, and the
-other is an extension end. An extension may be required (depending on the lower
-bound of the extension end), which indicates that an instance of the extending
+are extended through stereotypes, and give the ability to flexibly apply (and later
+<span class=SpellE>unapply</span>) stereotypes to elements. An extension is a
+kind of association, one end of which is an ordinary property, and the other is
+an extension end. An extension may be required (depending on the lower bound of
+the extension end), which indicates that an instance of the extending
stereotype must be created whenever an instance of the extended <span
class=SpellE>metaclass</span> is created. To create an extension using the UML
editor, follow these steps:</p>
@@ -1367,7 +1486,7 @@
<b style='mso-bidi-font-weight:normal'>OK</b> button.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1094" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1086" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Create the other extension (i.e. between <span
class=SpellE><b>uml::</b><b style='mso-bidi-font-weight:normal'>Property</b></span>
and <b style='mso-bidi-font-weight:normal'><Stereotype> <span
@@ -1378,13 +1497,13 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1095" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image025.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image026.jpg" v:shapes="_x0000_i1095"><![endif]></p>
+ id="_x0000_i1138" type="#_x0000_t75" style='width:696pt;height:607.5pt'>
+ <v:imagedata src="article_files/image021.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=810
+src="article_files/image022.jpg" v:shapes="_x0000_i1138"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1096" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1087" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>Youll notice that a number of new elements
have appeared in the UML editor. In particular, youll see a new stereotype
property with a name of the form <span style='font-family:"Courier New"'>base_<<span
@@ -1409,9 +1528,10 @@
class=SpellE>stereotype</span>,</pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:3'> </span><span class=SpellE><span
class=GramE>boolean</span></span> required) {</pre><pre style='margin-left:
-9.0pt'><img border=0 width=24 height=13 id="_x0000_i1097"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Extension <span
-class=SpellE>extension</span> = <span class=SpellE><span class=GramE>stereotype.createExtension</span></span><span
+9.0pt'><img border=0 width=24 height=13 id="_x0000_i1088"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Extension <span class=SpellE>extension</span> = <span
+class=SpellE><span class=GramE>stereotype.createExtension</span></span><span
class=GramE>(</span><span class=SpellE>metaclass</span>, required);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span><span class=GramE>out(</span>(required</pre><pre
@@ -1426,12 +1546,12 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience method on the stereotype that creates an extension (and
its ends) between it and a <span class=SpellE>metaclass</span> <img border=0
-width=24 height=13 id="_x0000_i1098" src="../../../../images/tag_1.gif"
+width=24 height=13 id="_x0000_i1089" src="../../../../images/tag_1.gif"
align=CENTER><span style='mso-spacerun:yes'> </span>as one of its siblings
(i.e. as a child of its profile namespace). Behind the scenes, the stereotype
also creates the ends of the extension, resulting in a new property on the
-stereotype (with a special name) and an extension end owned by the extension
-(again, with a special name).</p>
+stereotype (with a special name) and an extension end owned by the extension (again,
+with a special name).</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
lets see this method in action. For example, we could create a non-required
@@ -1444,7 +1564,7 @@
class=SpellE>propertyMetaclass</span>, <span class=SpellE>eAttributeStereotype</span>, false);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1099" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1090" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically create the
other extension (i.e. between <span class=SpellE>metaclass</span> Property
and stereotype <span class=SpellE>EReference</span>) for the <span
@@ -1468,8 +1588,8 @@
stereotypes are applied to a model and its elements, dynamic EMF (see the EMF
book for details) is used to store property values for the stereotypes. For the
most part, you can ignore this complexity, as long as you remember to define
-your profile before using it. To define a profile using the UML editor, follow
-these steps:</p>
+your profile before using it. To define a profile using the UML editor, follow these
+steps:</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>1)
Select a profile (i.e. <b style='mso-bidi-font-weight:normal'><<span
@@ -1484,13 +1604,13 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1100" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image027.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image028.jpg" v:shapes="_x0000_i1100"><![endif]></p>
+ id="_x0000_i1139" type="#_x0000_t75" style='width:696pt;height:709.5pt'>
+ <v:imagedata src="article_files/image023.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=946
+src="article_files/image024.jpg" v:shapes="_x0000_i1139"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1101" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1091" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>Youll notice that an annotation with source <b
style='mso-bidi-font-weight:normal'>http://www.eclipse.org/uml2/2.0.0/UML</b>
has been attached to the profile. It contains the generated <span class=SpellE>Ecore</span>
@@ -1507,7 +1627,7 @@
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static void <span class=SpellE>defineProfile</span>(Profile <span
class=SpellE>profile</span>) {</pre><pre style='margin-left:9.0pt'><img
-border=0 width=24 height=13 id="_x0000_i1102" src="../../../../images/tag_1.gif"
+border=0 width=24 height=13 id="_x0000_i1092" src="../../../../images/tag_1.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=SpellE><span
class=GramE>profile.define</span></span><span class=GramE>(</span>);</pre><pre
style='margin-left:9.0pt'><o:p> </o:p></pre><pre style='margin-left:9.0pt'><span
@@ -1517,7 +1637,7 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience method on the profile <img border=0 width=24 height=13
-id="_x0000_i1103" src="../../../../images/tag_1.gif" align=CENTER><span
+id="_x0000_i1093" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>that generates the <span class=SpellE>Ecore</span>
representation of the profile and increments its version.</p>
@@ -1551,24 +1671,24 @@
<pre style='margin-left:9.0pt'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static void save(org.eclipse.uml2.uml.Package package_, URI <span
class=SpellE>uri</span>) {</pre><pre style='margin-left:9.0pt'><img border=0
-width=24 height=13 id="_x0000_i1104" src="../../../../images/tag_1.gif"
+width=24 height=13 id="_x0000_i1094" src="../../../../images/tag_1.gif"
align=CENTER><span style='mso-tab-count:2'> </span>Resource <span
class=SpellE>resource</span> = <span class=SpellE>RESOURCE_<span class=GramE>SET.createResource</span></span><span
class=GramE>(</span><span class=SpellE>uri</span>);</pre><pre style='margin-left:
-9.0pt'><img border=0 width=24 height=13 id="_x0000_i1105"
-src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:2'> </span><span
-class=SpellE><span class=GramE>resource.getContents</span></span><span
+9.0pt'><img border=0 width=24 height=13 id="_x0000_i1095"
+src="../../../../images/tag_2.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=SpellE><span class=GramE>resource.getContents</span></span><span
class=GramE>(</span>).add(package_);</pre><pre style='margin-left:9.0pt'><o:p> </o:p></pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span><span
class=GramE>try</span> {</pre><pre style='margin-left:9.0pt'><img border=0
-width=24 height=13 id="_x0000_i1106" src="../../../../images/tag_3.gif"
+width=24 height=13 id="_x0000_i1096" src="../../../../images/tag_3.gif"
align=CENTER><span style='mso-tab-count:3'> </span><span
class=SpellE><span class=GramE>resource.save</span></span><span class=GramE>(</span>null);</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:3'> </span><span
class=GramE>out(</span>"Done.");</pre><pre style='margin-left:9.0pt'><span
style='mso-tab-count:2'> </span>} catch (<span class=SpellE>IOException</span> <span
class=SpellE>ioe</span>) {</pre><pre style='margin-left:9.0pt'><img border=0
-width=24 height=13 id="_x0000_i1107" src="../../../../images/tag_4.gif"
+width=24 height=13 id="_x0000_i1097" src="../../../../images/tag_4.gif"
align=CENTER><span style='mso-tab-count:3'> </span><span
class=GramE>err(</span><span class=SpellE>ioe.getMessage</span>());</pre><pre
style='margin-left:9.0pt'><span style='mso-tab-count:2'> </span>}</pre><pre
@@ -1576,14 +1696,14 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we use a statically initialized resource set <img border=0 width=24 height=13
-id="_x0000_i1108" src="../../../../images/tag_1.gif" align=CENTER><span
+id="_x0000_i1098" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>to create a resource with the specified URI,
add the package to the resources contents <img border=0 width=24 height=13
-id="_x0000_i1109" src="../../../../images/tag_2.gif" align=CENTER>, and ask the
-resource to save itself <img border=0 width=24 height=13 id="_x0000_i1110"
+id="_x0000_i1099" src="../../../../images/tag_2.gif" align=CENTER>, and ask the
+resource to save itself <img border=0 width=24 height=13 id="_x0000_i1100"
src="../../../../images/tag_3.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>using the default options. If an exception
-occurs, we notify the user <img border=0 width=24 height=13 id="_x0000_i1111"
+occurs, we notify the user <img border=0 width=24 height=13 id="_x0000_i1101"
src="../../../../images/tag_4.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>via our handy utility method.</p>
@@ -1601,7 +1721,7 @@
class=GramE>(</span><span class=SpellE>UMLResource.PROFILE_FILE_EXTENSION</span>));</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1112" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1102" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>The <span class=SpellE><code>UMLResource.PROFILE_FILE_EXTENSION</code></span>
constant represents the file extension for UML2 profiles (<code>.<span
class=SpellE>profile.uml</span></code>).</p>
@@ -1649,10 +1769,10 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1113" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image029.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image030.jpg" v:shapes="_x0000_i1113"><![endif]></p>
+ id="_x0000_i1140" type="#_x0000_t75" style='width:696pt;height:709.5pt'>
+ <v:imagedata src="article_files/image025.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=946
+src="article_files/image026.jpg" v:shapes="_x0000_i1140"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Programmatically,
we have a bit more work to do. The code snippet below shows a method that loads
@@ -1664,48 +1784,49 @@
style='mso-tab-count:2'> </span>org.eclipse.uml2.uml.Package package_ = null;</pre><pre
style='margin-left:.25in'><o:p> </o:p></pre><pre style='margin-left:.25in'><span
style='mso-tab-count:2'> </span><span class=GramE>try</span> {</pre><pre
-style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1114"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:3'> </span>Resource <span
-class=SpellE>resource</span> = <span class=SpellE>RESOURCE_<span class=GramE>SET.getResource</span></span><span
+style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1103"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+3'> </span>Resource <span class=SpellE>resource</span> = <span
+class=SpellE>RESOURCE_<span class=GramE>SET.getResource</span></span><span
class=GramE>(</span><span class=SpellE>uri</span>, true);</pre><pre
style='margin-left:.25in'><o:p> </o:p></pre><pre style='margin-left:.25in'><img
-border=0 width=24 height=13 id="_x0000_i1115" src="../../../../images/tag_2.gif"
+border=0 width=24 height=13 id="_x0000_i1104" src="../../../../images/tag_2.gif"
align=CENTER><span style='mso-tab-count:3'> </span>package_ = (org.eclipse.uml2.uml.Package) <span
class=SpellE><span class=GramE>EcoreUtil.getObjectByType</span></span><span
class=GramE>(</span></pre><pre style='margin-left:.25in'><span
-style='mso-tab-count:3'> </span><span style='mso-tab-count:
-1'> </span><span class=SpellE><span class=GramE>resource.getContents</span></span><span
-class=GramE>(</span>), <span class=SpellE>UMLPackage.Literals.PACKAGE</span>);</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:2'> </span>} catch (<span
+style='mso-tab-count:4'> </span><span class=SpellE><span
+class=GramE>resource.getContents</span></span><span class=GramE>(</span>), <span
+class=SpellE>UMLPackage.Literals.PACKAGE</span>);</pre><pre style='margin-left:
+.25in'><span style='mso-tab-count:2'> </span>} catch (<span
class=SpellE>WrappedException</span> we) {</pre><pre style='margin-left:.25in'><img
-border=0 width=24 height=13 id="_x0000_i1116" src="../../../../images/tag_3.gif"
+border=0 width=24 height=13 id="_x0000_i1105" src="../../../../images/tag_3.gif"
align=CENTER><span style='mso-tab-count:3'> </span><span
class=GramE>err(</span><span class=SpellE>we.getMessage</span>());</pre><pre
style='margin-left:.25in'><span style='mso-tab-count:3'> </span><span
class=SpellE><span class=GramE>System.exit</span></span><span class=GramE>(</span>1);</pre><pre
style='margin-left:.25in'><span style='mso-tab-count:2'> </span>}</pre><pre
style='margin-left:.25in'><o:p> </o:p></pre><pre style='margin-left:.25in'><img
-border=0 width=24 height=13 id="_x0000_i1117" src="../../../../images/tag_4.gif"
+border=0 width=24 height=13 id="_x0000_i1106" src="../../../../images/tag_4.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=GramE>return</span> package_;</pre><pre
style='margin-left:.25in'><span style='mso-tab-count:1'> </span>}</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we obtain a resource with the specified URI from our statically initialized
resource <span class=GramE>set </span><img border=0 width=24 height=13
-id="_x0000_i1118" src="../../../../images/tag_1.gif" align=CENTER>, asking that it
-be loaded on demand. Next, we use an EMF utility method <img border=0 width=24
-height=13 id="_x0000_i1119" src="../../../../images/tag_2.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>to obtain the first object of type <span
-style='font-family:"Courier New"'>Package</span> from the resources contents.
-If an exception occurs, we notify the user <img border=0 width=24 height=13
-id="_x0000_i1120" src="../../../../images/tag_3.gif" align=CENTER><span
-style='mso-spacerun:yes'> </span>via our handy utility method. Finally, if all
-is well, we return <img border=0 width=24 height=13 id="_x0000_i1121"
-src="../../../../images/tag_4.gif" align=CENTER><span
+id="_x0000_i1107" src="../../../../images/tag_1.gif" align=CENTER>, asking that
+it be loaded on demand. Next, we use an EMF utility method <img border=0
+width=24 height=13 id="_x0000_i1108" src="../../../../images/tag_2.gif"
+align=CENTER><span style='mso-spacerun:yes'> </span>to obtain the first object
+of type <span style='font-family:"Courier New"'>Package</span> from the
+resources contents. If an exception occurs, we notify the user <img border=0
+width=24 height=13 id="_x0000_i1109" src="../../../../images/tag_3.gif"
+align=CENTER><span style='mso-spacerun:yes'> </span>via our handy utility
+method. Finally, if all is well, we return <img border=0 width=24 height=13
+id="_x0000_i1110" src="../../../../images/tag_4.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>the package.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1122" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1111" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>The <span class=SpellE><code>EcoreUtil</code></span>
class (provided by EMF) defines a number of utilities that you may find quite
useful when working with EMF-based resources.</p>
@@ -1715,10 +1836,10 @@
from a resource with URI ExtendedPO2.uml (relative to a URI passed in as an
argument) as follows:</p>
-<pre style='margin-left:.25in'><span style='mso-tab-count:2'> </span>Model epo2Model = (Model) <span
-class=GramE>load(</span><span class=SpellE>URI.createURI</span>(<span
-class=SpellE>args</span>[0]).<span class=SpellE>appendSegment</span>(</pre><pre
-style='margin-left:.25in'><span style='mso-tab-count:3'> </span>"ExtendedPO2").<span
+<pre style='margin-left:.25in'><span style='mso-tab-count:2'> </span><span
+lang=IT style='mso-ansi-language:IT'>Model epo2Model = (Model) load(URI.createURI(args[0]).appendSegment(<o:p></o:p></span></pre><pre
+style='margin-left:.25in'><span lang=IT style='mso-ansi-language:IT'><span
+style='mso-tab-count:3'> </span></span>"ExtendedPO2").<span
class=SpellE><span class=GramE>appendFileExtension</span></span><span
class=GramE>(</span><span class=SpellE>UMLResource.FILE_EXTENSION</span>));</pre>
@@ -1726,8 +1847,8 @@
Profiles</h3>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>OK,
-our profile has been created, defined, and saved, and were ready to apply it
-to our model. Applying a profile means that it is allowed (but not necessarily
+our profile has been created, defined, and saved, and were ready to apply it to
+our model. Applying a profile means that it is allowed (but not necessarily
required) to apply the stereotypes that are defined in the profile to elements
in the package. A profile application is a special type of package import that
indicates that a profile has been applied to a package. To apply a profile to a
@@ -1747,9 +1868,9 @@
button, then press the <b style='mso-bidi-font-weight:normal'>OK</b> button.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1123" src="../../../../images/tip.gif"><span
-style='mso-spacerun:yes'> </span>Be sure to pick the profile weve created
-instead of the built-in profile provided by the UML resources plug-in (i.e. <span
+border=0 width=62 height=13 id="_x0000_i1112" src="../../../../images/tip.gif"><span
+style='mso-spacerun:yes'> </span>Be sure to pick the profile weve created instead
+of the built-in profile provided by the UML resources plug-in (i.e. <span
class=SpellE><b style='mso-bidi-font-weight:normal'>ecore</b></span>, not <span
class=SpellE><b style='mso-bidi-font-weight:normal'>Ecore</b></span>).</p>
@@ -1757,13 +1878,13 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1124" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image031.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image032.jpg" v:shapes="_x0000_i1124"><![endif]></p>
+ id="_x0000_i1141" type="#_x0000_t75" style='width:696pt;height:709.5pt'>
+ <v:imagedata src="article_files/image027.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=946
+src="article_files/image028.jpg" v:shapes="_x0000_i1141"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1125" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1113" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>Youll notice another annotation (with source <b
style='mso-bidi-font-weight:normal'>http://www.eclipse.org/uml2/2.0.0/UML</b>)
has been attached, in this case to keep track of the <span class=SpellE>Ecore</span>
@@ -1782,13 +1903,14 @@
<pre style='margin-left:8.5pt'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static void <span class=SpellE>applyProfile</span>(org.eclipse.uml2.uml.Package package_,</pre><pre
-style='margin-left:8.5pt'><span style='mso-tab-count:3'> </span>Profile <span
-class=SpellE>profile</span>) {</pre><pre style='margin-left:8.5pt'><img
-border=0 width=24 height=13 id="_x0000_i1126" src="../../../../images/tag_1.gif"
-align=CENTER><span style='mso-tab-count:2'> </span><span class=SpellE>package_.<span
-class=GramE>applyProfile</span></span><span class=GramE>(</span>profile);</pre><pre
-style='margin-left:8.5pt'><o:p> </o:p></pre><pre style='margin-left:8.5pt'><span
-style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Profile '" + <span
+style='margin-left:8.5pt'><span style='mso-tab-count:3'> </span><span
+lang=IT style='mso-ansi-language:IT'>Profile profile) {<o:p></o:p></span></pre><pre
+style='margin-left:8.5pt'><img border=0 width=24 height=13 id="_x0000_i1114"
+src="../../../../images/tag_1.gif" align=CENTER><span lang=IT style='mso-ansi-language:
+IT'><span style='mso-tab-count:2'> </span>package_.applyProfile(profile);<o:p></o:p></span></pre><pre
+style='margin-left:8.5pt'><span lang=IT style='mso-ansi-language:IT'><o:p> </o:p></span></pre><pre
+style='margin-left:8.5pt'><span lang=IT style='mso-ansi-language:IT'><span
+style='mso-tab-count:2'> </span></span><span class=GramE>out(</span>"Profile '" + <span
class=SpellE>profile.getQualifiedName</span>() + "' applied to package '"</pre><pre
style='margin-left:8.5pt'><span style='mso-tab-count:3'> </span>+ <span
class=SpellE>package_.<span class=GramE>getQualifiedName</span></span><span
@@ -1797,7 +1919,7 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience method on the package <img border=0 width=24 height=13
-id="_x0000_i1127" src="../../../../images/tag_1.gif" align=CENTER><span
+id="_x0000_i1115" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>that creates a profile application on the
package and sets the profile as the imported profile.</p>
@@ -1839,7 +1961,7 @@
style='mso-bidi-font-weight:normal'>OK</b> button.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1128" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1116" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Apply the appropriate stereotypes to other
properties (<b style='mso-bidi-font-weight:normal'><Property> <span
class=SpellE>shippedOrders</span> : <span class=SpellE>PurchaseOrder</span>
@@ -1859,28 +1981,28 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1129" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image033.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image034.jpg" v:shapes="_x0000_i1129"><![endif]></p>
+ id="_x0000_i1142" type="#_x0000_t75" style='width:696pt;height:709.5pt'>
+ <v:imagedata src="article_files/image029.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=946
+src="article_files/image030.jpg" v:shapes="_x0000_i1142"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=62 height=13 id="_x0000_i1130" src="../../../../images/tip.gif"><span
+border=0 width=62 height=13 id="_x0000_i1117" src="../../../../images/tip.gif"><span
style='mso-spacerun:yes'> </span>A stereotype (and its tagged values) can be
unapplied using the <b style='mso-bidi-font-weight:normal'>UML Editor >
Element > <span class=SpellE>Unapply</span> Stereotype
</b> menu item.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
-look at how to perform the same task using Java code. The code snippet below
-shows a method that programmatically applies a specified stereotype to a
-specified (named) element.</p>
+look at how to perform the same task using Java code. The code snippet below shows
+a method that programmatically applies a specified stereotype to a specified
+(named) element.</p>
<pre style='margin-left:.25in'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static void <span class=SpellE>applyStereotype</span>(<span
class=SpellE>NamedElement</span> <span class=SpellE>namedElement</span>,</pre><pre
style='margin-left:.25in'><span style='mso-tab-count:3'> </span>Stereotype <span
class=SpellE>stereotype</span>) {</pre><pre style='margin-left:.25in'><img
-border=0 width=24 height=13 id="_x0000_i1131" src="../../../../images/tag_1.gif"
+border=0 width=24 height=13 id="_x0000_i1118" src="../../../../images/tag_1.gif"
align=CENTER><span style='mso-tab-count:2'> </span><span class=SpellE><span
class=GramE>namedElement.applyStereotype</span></span><span class=GramE>(</span>stereotype);</pre><pre
style='margin-left:.25in'><o:p> </o:p></pre><pre style='margin-left:.25in'><span
@@ -1893,7 +2015,7 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience method on the element <img border=0 width=24 height=13
-id="_x0000_i1132" src="../../../../images/tag_1.gif" align=CENTER><span
+id="_x0000_i1119" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>that creates an instance of the <span
class=SpellE>Ecore</span> class representing the specified stereotype (using
dynamic EMF) and attaches it to the element using an annotation.</p>
@@ -1918,7 +2040,7 @@
class=SpellE>pendingOrdersProperty</span>, <span class=SpellE>eReferenceStereotype</span>);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1133" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1120" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically apply the
appropriate stereotypes to other properties (i.e.
epo2::Supplier::shippedOrders, epo2::PurchaseOrder::totalAmount,
@@ -1942,13 +2064,13 @@
editor.</p>
<p style='margin-left:27.5pt;tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>2)
-Enter or select a value (i.e. <b>true</b>) for the property (i.e. <b
-style='mso-bidi-font-weight:normal'>Is Volatile</b>) under the category named for
-the stereotype (i.e. <span class=SpellE><b style='mso-bidi-font-weight:normal'>EReference</b></span>)
-in the <b>Properties</b> view.</p>
+Enter or select a value (i.e. <b>false</b>) for the property (i.e. <b
+style='mso-bidi-font-weight:normal'>Is Resolve Proxies</b>) under the category
+named for the stereotype (i.e. <span class=SpellE><b style='mso-bidi-font-weight:
+normal'>EReference</b></span>) in the <b>Properties</b> view.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1134" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1121" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Get and set values for other stereotype
properties (i.e. <b style='mso-bidi-font-weight:normal'>Is Transient</b> and <b
style='mso-bidi-font-weight:normal'>Is Resolve Proxies</b> under <span
@@ -1989,24 +2111,24 @@
this point your workspace should look something like this:</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><!--[if gte vml 1]><v:shape
- id="_x0000_i1135" type="#_x0000_t75" style='width:960pt;height:768pt'>
- <v:imagedata src="article_files/image035.png" o:title=""/>
-</v:shape><![endif]--><![if !vml]><img border=0 width=1280 height=1024
-src="article_files/image036.jpg" v:shapes="_x0000_i1135"><![endif]></p>
+ id="_x0000_i1143" type="#_x0000_t75" style='width:696pt;height:709.5pt'>
+ <v:imagedata src="article_files/image031.png" o:title=""/>
+</v:shape><![endif]--><![if !vml]><img border=0 width=928 height=946
+src="article_files/image032.jpg" v:shapes="_x0000_i1143"><![endif]></p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Lets
look at how to perform the same task using Java code. The code snippet below
-shows a method that programmatically gets and returns the value of a specified property
-of a specified stereotype for a specified element.</p>
+shows a method that programmatically gets and returns the value of a specified
+property of a specified stereotype for a specified element.</p>
<pre style='margin-left:.25in'><span style='mso-tab-count:1'> </span><span
class=GramE>protected</span> static Object <span class=SpellE>getStereotypePropertyValue</span>(</pre><pre
style='margin-left:.25in'><span style='mso-tab-count:3'> </span><span
class=SpellE>NamedElement</span> <span class=SpellE>namedElement</span>, Stereotype <span
class=SpellE>stereotype</span>, Property <span class=SpellE>property</span>) {</pre><pre
-style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1136"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span>Object value = <span
-class=SpellE><span class=GramE>namedElement.getValue</span></span><span
+style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1122"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span>Object value = <span class=SpellE><span class=GramE>namedElement.getValue</span></span><span
class=GramE>(</span>stereotype, <span class=SpellE>property.getName</span>());</pre><pre
style='margin-left:.25in'><o:p> </o:p></pre><pre style='margin-left:.25in'><span
style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Value of stereotype property '" + <span
@@ -2022,7 +2144,7 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience method on the (named) element <img border=0 width=24
-height=13 id="_x0000_i1137" src="../../../../images/tag_1.gif" align=CENTER><span
+height=13 id="_x0000_i1123" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>that retrieves the value of a property with a
specified name from the dynamically created <span class=SpellE>Ecore</span>
object instance corresponding to the specified applied stereotype, notifies the
@@ -2042,7 +2164,7 @@
class=GramE>isVolatileProperty</span></span>);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1138" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1124" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically get the values
of the other stereotype properties for elements in the ExtendedPO2 model.</p>
@@ -2056,9 +2178,9 @@
class=SpellE>NamedElement</span> <span class=SpellE>namedElement</span>,</pre><pre
style='margin-left:.25in'><span style='mso-tab-count:3'> </span>Stereotype <span
class=SpellE>stereotype</span>, Property <span class=SpellE>property</span>, Object value) {</pre><pre
-style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1139"
-src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:2'> </span><span
-class=SpellE><span class=GramE>namedElement.setValue</span></span><span
+style='margin-left:.25in'><img border=0 width=24 height=13 id="_x0000_i1125"
+src="../../../../images/tag_1.gif" align=CENTER><span style='mso-tab-count:
+2'> </span><span class=SpellE><span class=GramE>namedElement.setValue</span></span><span
class=GramE>(</span>stereotype, <span class=SpellE>property.getName</span>(), value);</pre><pre
style='margin-left:.25in'><o:p> </o:p></pre><pre style='margin-left:.25in'><span
style='mso-tab-count:2'> </span><span class=GramE>out(</span>"Value of stereotype property '" + <span
@@ -2072,7 +2194,7 @@
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>Here
we call a convenience method on the (named) element <img border=0 width=24
-height=13 id="_x0000_i1140" src="../../../../images/tag_1.gif" align=CENTER><span
+height=13 id="_x0000_i1126" src="../../../../images/tag_1.gif" align=CENTER><span
style='mso-spacerun:yes'> </span>that sets the value of a property with a
specified name in the dynamically created <span class=SpellE>Ecore</span>
object instance corresponding to the specified applied stereotype and notifies
@@ -2093,7 +2215,7 @@
class=GramE>isVolatileProperty</span></span>, <span class=SpellE>Boolean.TRUE</span>);</pre>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'><img
-border=0 width=61 height=13 id="_x0000_i1141" src="../../../../images/tryit.gif"><span
+border=0 width=61 height=13 id="_x0000_i1127" src="../../../../images/tryit.gif"><span
style='mso-spacerun:yes'> </span>Write code to programmatically set the values
of the other stereotype properties for elements in the ExtendedPO2 model.</p>
@@ -2107,8 +2229,9 @@
UML2.</p>
<p style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>For
-more information on UML2, visit the <a href="http://www.eclipse.org/modeling/mdt/?project=uml2#uml2">home
-page</a> or join the <a href="news://news.eclipse.org/eclipse.modeling.mdt.uml2">newsgroup</a>.</p>
+more information on UML2, visit the <a
+href="http://www.eclipse.org/modeling/mdt/?project=uml2#uml2">home page</a> or
+join the <a href="news://news.eclipse.org/eclipse.modeling.mdt.uml2">newsgroup</a>.</p>
<h2 style='tab-stops:45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt'>References</h2>
@@ -2134,10 +2257,11 @@
> Import
> External Plug-ins and Fragments</b>). You can run the <code>IntroductionToUML2Profiles</code>
class as a Java application with two file <span class=SpellE>URIs</span> (e.g.
file:/C:/Introduction to UML2 Profiles <span class=SpellE>jar<span
-class=GramE>:file</span></span>:/C:/Eclipse 3.2/eclipse/plugins/org.eclipse.uml2.uml.resources_2.0.0.v200606221411.jar!/) as program
-arguments. The first URI should refer to a folder that contains the ExtendedPO2
-model described in the Getting Started with UML2 article. The second URI
-should use the JAR scheme (since the UML resources plug-in is <span
+class=GramE>:file</span></span>:/C:/Eclipse
+3.2/eclipse/plugins/org.eclipse.uml2.uml.resources_2.0.0.v200606221411.jar!/)
+as program arguments. The first URI should refer to a folder that contains the
+ExtendedPO2 model described in the Getting Started with UML2 article. The
+second URI should use the JAR scheme (since the UML resources plug-in is <span
class=SpellE>JARd</span> as of UML2 1.1) and refer to the location of the <span
style='font-family:"Courier New"'>org.eclipse.uml2.uml.resources</span> plug-<span
class=SpellE>ins</span> JAR archive.</p>
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/filelist.xml b/docs/articles/Introduction_to_UML2_Profiles/article_files/filelist.xml
index 145c9c3..18e66e3 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/filelist.xml
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/filelist.xml
@@ -1,11 +1,17 @@
<xml xmlns:o="urn:schemas-microsoft-com:office:office">
<o:MainFile HRef="../article.html"/>
- <o:File HRef="image001.emz"/>
+ <o:File HRef="image037.png"/>
+ <o:File HRef="image038.jpg"/>
+ <o:File HRef="image039.emz"/>
<o:File HRef="image002.gif"/>
<o:File HRef="image003.png"/>
<o:File HRef="image004.jpg"/>
<o:File HRef="image005.png"/>
<o:File HRef="image006.jpg"/>
+ <o:File HRef="image001.png"/>
+ <o:File HRef="image040.jpg"/>
+ <o:File HRef="image041.png"/>
+ <o:File HRef="image042.jpg"/>
<o:File HRef="image007.png"/>
<o:File HRef="image008.jpg"/>
<o:File HRef="image009.png"/>
@@ -32,9 +38,5 @@
<o:File HRef="image030.jpg"/>
<o:File HRef="image031.png"/>
<o:File HRef="image032.jpg"/>
- <o:File HRef="image033.png"/>
- <o:File HRef="image034.jpg"/>
- <o:File HRef="image035.png"/>
- <o:File HRef="image036.jpg"/>
<o:File HRef="filelist.xml"/>
</xml>
\ No newline at end of file
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image001.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image001.png
new file mode 100644
index 0000000..2e8a5c7
--- /dev/null
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image001.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image007.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image007.png
index daf1ec1..8c58983 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image007.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image007.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image008.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image008.jpg
index 693d595..812ffbd 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image008.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image008.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image009.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image009.png
index 00c2a29..543ad41 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image009.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image009.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image010.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image010.jpg
index 3b9216a..84fbeea 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image010.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image010.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image011.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image011.png
index afdf7d9..ca2f4bf 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image011.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image011.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image012.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image012.jpg
index 87f96a0..fd18025 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image012.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image012.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image013.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image013.png
index 49b89a4..fb7e963 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image013.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image013.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image014.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image014.jpg
index 2813305..6924ed9 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image014.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image014.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image015.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image015.png
index 98c554e..2e7b976 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image015.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image015.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image016.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image016.jpg
index 74d98d4..775a4d8 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image016.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image016.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image017.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image017.png
index ce6f5aa..4f0df7c 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image017.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image017.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image018.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image018.jpg
index e0582da..8d74278 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image018.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image018.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image019.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image019.png
index b3b3413..ad38d36 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image019.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image019.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image020.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image020.jpg
index ce57885..4ae88df 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image020.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image020.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image021.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image021.png
index ed6b122..31ab9ba 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image021.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image021.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image022.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image022.jpg
index 00d22fe..6f2330d 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image022.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image022.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image023.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image023.png
index b65ace0..7e4cc63 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image023.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image023.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image024.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image024.jpg
index 731134d..d3786b9 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image024.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image024.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image025.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image025.png
index 6db1dbd..b32fb90 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image025.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image025.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image026.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image026.jpg
index cbfd7b0..22ec1e5 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image026.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image026.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image027.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image027.png
index 577c0f7..1197ecb 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image027.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image027.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image028.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image028.jpg
index 5e59e7b..093bcd6 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image028.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image028.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image029.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image029.png
index 8b09348..56f5502 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image029.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image029.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image030.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image030.jpg
index a0346d7..bd67acc 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image030.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image030.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image031.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image031.png
index dd762d9..172764f 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image031.png
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image031.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image032.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image032.jpg
index 9246076..bb79335 100644
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image032.jpg
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image032.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image033.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image033.png
deleted file mode 100644
index 148c386..0000000
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image033.png
+++ /dev/null
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image034.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image034.jpg
deleted file mode 100644
index 00f2cba..0000000
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image034.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image035.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image035.png
deleted file mode 100644
index c1e72e3..0000000
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image035.png
+++ /dev/null
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image036.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image036.jpg
deleted file mode 100644
index d43b850..0000000
--- a/docs/articles/Introduction_to_UML2_Profiles/article_files/image036.jpg
+++ /dev/null
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image037.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image037.png
new file mode 100644
index 0000000..0b3545b
--- /dev/null
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image037.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image038.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image038.jpg
new file mode 100644
index 0000000..6a6b7c5
--- /dev/null
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image038.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image001.emz b/docs/articles/Introduction_to_UML2_Profiles/article_files/image039.emz
similarity index 100%
rename from docs/articles/Introduction_to_UML2_Profiles/article_files/image001.emz
rename to docs/articles/Introduction_to_UML2_Profiles/article_files/image039.emz
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image040.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image040.jpg
new file mode 100644
index 0000000..3517695
--- /dev/null
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image040.jpg
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image041.png b/docs/articles/Introduction_to_UML2_Profiles/article_files/image041.png
new file mode 100644
index 0000000..70b1725
--- /dev/null
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image041.png
Binary files differ
diff --git a/docs/articles/Introduction_to_UML2_Profiles/article_files/image042.jpg b/docs/articles/Introduction_to_UML2_Profiles/article_files/image042.jpg
new file mode 100644
index 0000000..a903328
--- /dev/null
+++ b/docs/articles/Introduction_to_UML2_Profiles/article_files/image042.jpg
Binary files differ