<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
          "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<article id="article">
	<articleinfo>
		<title>Build your own textual DSL with Tools from the Eclipse Modeling Project</title>
		<releaseinfo role="SVN">
			$Id: article.xml,v 1.3 2008/07/23 16:49:44 wbeaton Exp $
		</releaseinfo>
		<date>April 18, 2008</date>
		<authorgroup>
			<author>
				<firstname>Peter</firstname>
				<surname>Friese</surname>
				<affiliation>
					<orgname>itemis AG</orgname>
					<address>
						<email>peter.friese@itemis.de</email>
					</address>
				</affiliation>
			</author>
			<author>
				<firstname>Sven</firstname>
				<surname>Efftinge</surname>
				<affiliation>
					<orgname>itemis AG</orgname>
					<address>
						<email>sven.efftinge@itemis.de</email>
					</address>
				</affiliation>
			</author>
			<author>
				<firstname>Jan</firstname>
				<surname>Köhnlein</surname>
				<affiliation>
					<orgname>itemis AG</orgname>
					<address>
						<email>jan.koehnlein@itemis.de</email>
					</address>
				</affiliation>
			</author>
		</authorgroup>
		<copyright>
			<year>2008</year>
			<holder>itemis AG. All rights reserved.</holder>
		</copyright>
		<abstract>
			<para>
				Domain Specific Languages (DSLs) are a hot topic nowadays. While creating internal DSLs
				is no big deal, external DSLs have been said to be hard to create. In this
				tutorial we will show you how easy it is to create your own DSL with tools from the
				Eclipse Modeling Project (EMP) in less than one hour.
			</para>
		</abstract>
		<legalnotice>
			<para>
				Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United 
				States, other countries, or both.
			</para>
			<para>
				Linux is a trademark of Linus Torvalds in the United States, other countries, or both.
			</para>
			<para>
				Microsoft is a trademark of Microsoft Corporation in the United States, other countries, or both.
			</para>
			<para>
				UNIX is a registered trademark of The Open Group in the United States and other countries.
			</para>
			<para>
				Other company, product, or service names may be trademarks or service marks of others.
			</para>
		</legalnotice>
	</articleinfo>
	<section id="introduction">
		<title>Introduction</title>
		<para>
		The purpose of this tutorial is to illustrate the definition of external
    DSLs using tools from the Eclipse Modeling Project (EMP). The main focus is on the 
    <emphasis>Xtext</emphasis> framework. We will start by defining our own DSL in an 
    <emphasis>Xtext</emphasis> grammar. Then we will use the
    <emphasis>Xtext</emphasis> framework to generate a parser, an 
    <emphasis>Ecore-based</emphasis>
    metamodel and a textual editor for Eclipse. Afterwards we will see how to refine 
    the DSL and its editor by means of <emphasis>Xtend</emphasis> extensions. 
    Finally, we will learn how one can generate code out of textual models using the template
    language <emphasis>Xpand</emphasis>.</para>

    <para>The actual content of this example is rather trivial&mdash;our 
    DSL will describe entities with properties and references between them from
    which we generate Java classes according to the JavaBean conventions&mdash;a rather
    typical data model. In a real setting, we might also generate persistence 
    mappings, etc. from the same models. We skipped this to keep the tutorial simple.
		</para>
	</section>
	<section id="environment">
		<title>Setting up the Environment</title>
		<para>
		To follow this tutorial, you will need to install the following components
		<itemizedlist>
			<listitem>
				<simpara>
					A Java 5 or 6 SDK. Download it at
					<xref linkend="java_download"/> 
					or use another SDK that suits your environment. 
				</simpara>
			</listitem>
			<listitem>
				<simpara>
					Eclipse SDK 3.3 (From the &quot;Europa&quot; release). You can download it from 
					<xref linkend="eclipse_europa"/>. 
					Install by simply unpacking the archive.
				</simpara>
			</listitem>
			<listitem>
				<simpara>
					openArchitectureWare 4.3. Download the ZIP file from 
					<xref linkend="oaw_download"/> 
					or point your eclipse update manager to  
					<xref linkend="oaw_update_site"/>.
				</simpara>
			</listitem>
		</itemizedlist>
		</para>
		<para>
			The source code for the samples developed in this article can be downloaded from <xref linkend="solution"/>.
		</para>
	</section>
	<section id="defininig_the_dsl">
		<title>Defining the DSL</title>
		<section id="creating_an_xtext_project">
			<title>Creating an Xtext Project</title>
			<para>
				Xtext projects are based on the well-known Eclipse plug-in architecture. In fact, to
				create a new textual DSL with Xtext, you'll need up to three projects that depend
				on each other. But fear not - Xtext comes with a handy wizards to get you up and running
				in no time.
			</para>
			<para>
				To create a new Xtext project, 
				<itemizedlist>
					<listitem>
						<simpara>
							Start up Eclipse 3.3 with oAW 4.3 installed 
							(see <xref linkend="environment" />) in a fresh workspace and close the 
							welcome screen
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							Select <emphasis role="bold">File > New... > Project... Xtext Project</emphasis>
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							Specify the project settings in the wizard dialog. Since you started in a
							fresh workspace, the wizard should provide sensible defaults. See the 
							Xtext reference documentation for a detailed overview of what all those
							settings mean.
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							Click <emphasis role="bold">Finish</emphasis>
						</simpara>
					</listitem>
				</itemizedlist>
			</para>
			<para>
				The wizard creates three projects, <filename>my.dsl</filename>, 
				<filename>my.dsl.editor</filename>, and <filename>my.dsl.generator</filename>:
				
				<itemizedlist>
					<listitem>
						<simpara>
							<emphasis role="bold">my.dsl</emphasis> is the language project, in which
							we will define the grammar for our DSL. After running the Xtext generator,
							this model also contains a parser for the DSL and a metamodel backing the
							language.
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							<emphasis role="bold">my.dsl.editor</emphasis> will contain the DSL 
							editor. Since we have not yet defined a grammar, this project is still 
							empty. It will be filled by the Xtext generator later. 
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							<emphasis role="bold">my.dsl.generator</emphasis> contains an 
							openArchitectureWare code generator skeleton. Later in this tutorial, you 
							will write a couple of templates that process models created with your
							DSL editor.
						</simpara>
					</listitem>
				</itemizedlist>
			</para>
		</section>
		<section id="defining_the_grammar">
			<title>Defining the Grammar</title>
			<para>
				Now that you have created a new Xtext project, you can define the grammar for
				your DSL. The grammar specifies the metamodel <emphasis>and</emphasis> the concrete
				syntax for your domain specific language. This allows for fast roundtrips and an
				incremental development of your language, as you will see later.
			</para>
			<para>
				To specify the grammar, you will be using the Xtext grammar language. The Xtext 
				documentation contains an extensive reference of all grammar elements. However, to
				make it easier for you to follow along this tutorial, we have included the relevant
				grammar rules here. 
			</para>
			<para>
				In this tutorial, we will develop a DSL for entities (since entities are something
				most developers know quite well).
				<itemizedlist>
					<listitem>
						<simpara>
							Open the Xtext grammar definition <filename>my.dsl/src/mydsl.xtxt</filename>
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							And type in the following grammar definition:
						</simpara>
					</listitem>
				</itemizedlist>
			</para>
			<programlisting>
Model:
  (types+=Type)*;            <co id="rule.model"/>

Type:
  DataType | Entity;         <co id="rule.type"/>

DataType:
  "datatype" name=ID;        <co id="rule.datatype" />

Entity:
  "entity" name=ID "{"
    (features+=Feature)*     <co id="rule.entity" />
  "}";

Feature:
  type=[Type|ID] name=ID;    <co id="rule.feature" />
			</programlisting>
			<calloutlist>
				<callout arearefs="rule.model">
					<para>
						The <emphasis role="bold">Model</emphasis> rule specifies that a model contains
						zero or more <emphasis role="bold">Types</emphasis>.
					</para>
				</callout>
				<callout arearefs="rule.type">
					<para>
						The <emphasis role="bold">Type</emphasis> rule is an abstract rule. It specifies
						that a <emphasis role="bold">Type</emphasis> may either be a <emphasis role="bold">DataType</emphasis>
						or an <emphasis role="bold">Entity</emphasis>
					</para>
				</callout>
				<callout arearefs="rule.datatype">
					<para>
						The <emphasis role="bold">DataType</emphasis> rule specifies that a <emphasis role="bold">DataType</emphasis>
						starts with the literal <emphasis role="bold">datatype</emphasis>, followed by a name. The
						name must comply with the (built-in) rule for identifiers (that is, only
						characters followed by zero or more characters mixed with any number of numbers
						are valid).
					</para>
				</callout>
				<callout arearefs="rule.entity">
					<para>
						The <emphasis role="bold">Entity</emphasis> rule specifies that an <emphasis role="bold">Entity</emphasis>
						starts with the literal <emphasis role="bold">entity</emphasis>, followed by the name of the entity
						(which, in turn, must be an identifier). An entity definition has a body which is surrounded
						by curly braces. The body may then contain any number (zero or more) of <emphasis role="bold">Feature</emphasis>s.
					</para>
				</callout>
				<callout arearefs="rule.feature">
					<para>
						A <emphasis role="bold">Feature</emphasis> has a reference to a <emphasis role="bold">Type</emphasis> 
						and a name. The reference to <emphasis role="bold">Type</emphasis> is particularly interesting,
						because by appending the <emphasis>|ID</emphasis> modifier, we point out that
						the reference to <emphasis role="bold">Type</emphasis> will be determined by an ID.
					</para>
				</callout>
			</calloutlist>

			<para>
				Your grammar should now look like in <xref linkend="xtext_dsl_grammar"/>.
			</para>
			<figure id="xtext_dsl_grammar">
				<title>DSL grammar</title>
				<mediaobject>
					<imageobject role="fo">
						<imagedata fileref="images/3_grammar.png"
							scale="60" />
					</imageobject>
					<imageobject role="html">
						<imagedata fileref="images/3_grammar.png" />
					</imageobject>
				</mediaobject>
			</figure>
		</section>
		<section id="generating_the_dsl_editor">
			<title>Generating the DSL Editor</title>
			<para>
				Having specified the grammar, we can now generate the DSL editor.
				<itemizedlist>
					<listitem>
						<simpara>
							Right-click inside the Xtext grammar editor to open the context menu. 
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							Select <emphasis role="bold">Generate Xtext Artifacts</emphasis> to 
							generate the DSL parser, the corresonding metamodel and, last but not 
							least, the DSL editor.
						</simpara>
					</listitem>
				</itemizedlist>
			</para>
			<figure id="generate_xtext_artifacts">
				<title>Generate Xtext artifacts</title>
				<mediaobject>
					<imageobject role="fo">
						<imagedata fileref="images/4_generate_xtext_artifacts.png"
							scale="60" />
					</imageobject>
					<imageobject role="html">
						<imagedata fileref="images/4_generate_xtext_artifacts.png" />
					</imageobject>
				</mediaobject>
			</figure>
		</section>
		<section id="running_the_editor">
			<title>Deploying and Running the Editor</title>
			<para>
				To run the generated editor, you have to deploy the DSL plug-ins to an Eclipse 
				installation. For simplicity, we take the one we are already running.
				<itemizedlist>
					<listitem>
						<simpara>
							Choose <emphasis role="bold">Export... > Deployable plug-ins and 
							fragments...</emphasis>
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							The <emphasis>Export</emphasis> dialog appears.
							Select the three DSL plug-ins.
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							Enter the path to your Eclipse installation. Make sure the selected 
							directory contains the Eclipse executable and a folder named 
							<emphasis>plugins</emphasis>. Usually, the directory is called 
							<emphasis>eclipse</emphasis>.
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							Choose <emphasis role="bold">Finish</emphasis>.
						</simpara>
					</listitem>
					<listitem>
						<simpara>
							Restart Eclipse.
						</simpara>
					</listitem>
				</itemizedlist>
				<figure id="deploy_plugins">
					<title>Deployment of the DSL plug-ins</title>
					<mediaobject>
						<imageobject role="fo">
							<imagedata fileref="images/5_deploy_plugins.png"
								scale="60" />
						</imageobject>
						<imageobject role="html">
							<imagedata fileref="images/5_deploy_plugins.png" />
						</imageobject>
					</mediaobject>
				</figure>
			</para>
		</section>
		<section id="exploring_the_editor">
			<title>Taking it for a spin</title>
			<para>
				You should now see the same workspace as before. To check out the DSL editor, create 
				a new <emphasis>mydsl</emphasis> project and model in the runtime instance:
			</para>
			<itemizedlist>
				<listitem>
					<simpara>
						Select <emphasis role="bold">File > New... > Other... > mydsl 
						Project</emphasis> to create a new <emphasis>mydsl</emphasis> project.
					</simpara>
				</listitem>
				<listitem>
					<simpara>
						Click <emphasis role="bold">Next</emphasis> to proceed to the next wizard page.
					</simpara>
				</listitem>
				<listitem>
					<simpara>
						Leave the project name as is (it should read <emphasis>mydslproject</emphasis>)
						and click <emphasis role="bold">Finish</emphasis> to create the project.
					</simpara>
				</listitem>
			</itemizedlist>
			<para>
				The wizard will now create a new project for you, including an empty sample model.
			</para>
			<para>
				Key in the following model to see your editor in action. Note how the outline reflects
				the contents of your model. While typing, try using the content assist feature by 
				pressing <keycombo><keycap>CTRL</keycap><keycap>Space</keycap></keycombo>.
			</para> 
			<programlisting>
datatype String
datatype String

entity Person {
	String name
	String lastName
	Address home
	Address business
}

entity Address {
	String street
	String zip
	String city
}		
			</programlisting>
			<para>
				Xtext-based editors support a number of features right out of the box:
			</para>
			<itemizedlist>
				<listitem>
					<para>
						Syntax coloring
					</para>
				</listitem>
				<listitem>
					<para>
						Code completion (press 
						<keycombo><keycap>CTRL</keycap><keycap>Space</keycap></keycombo> to 
						invoke)
					</para>
				</listitem>
				<listitem>
					<para>
						Navigation (either by holding the <keycap>CTRL</keycap> key and 
						left-clicking an identifier or by pressing the <keycap>F3</keycap> key
						when the cursor is on an identifier)  
					</para>
				</listitem>
				<listitem>
					<para>
						Find References (place the cursor on an identifier and press 
						<keycombo><keycap>CTRL</keycap><keycap>SHIFT</keycap><keycap>G</keycap></keycombo>)
					</para>
				</listitem>
				<listitem>
					<para>
						Folding
					</para>
				</listitem>
				<listitem>
					<para>
						Outline
					</para>
				</listitem>
				<listitem>
					<para>
						Quick Outline (press <keycombo><keycap>CTRL</keycap><keycap>O</keycap></keycombo>)
					</para>
				</listitem>
				<listitem>
					<para>
						Syntax checking / Error markers
					</para>
				</listitem>
			</itemizedlist>
			<para>
				It is important to note that all those features have been derived from the grammar 
				you defined earlier. If you make changes to the grammar, the generated tooling will 
				reflect these changes as well, as you will see in a minute.
			</para>
		</section>
	</section>
	<section id="refining_the_dsl">
		<title>Refining the DSL</title>
		<para>
			While Xtext-based DSL editors have a collection of great feature that come for free, they
			can be easily customized to your needs. In the following section, we will add some extra
			features that improve your editor's usability. As you will see, implementing those
			features will not cost us much effort.
		</para>
		<section id="adjusting_code_completion">
			<title>Adjusting code completion</title>
			<para>
				First, let's enhance code completion. Let's assume you want to assist the user of 
				your editor in choosing the right data types. In most projects, there's probably
				only about five or six different data types in use, so why not provide them in the
				suggestion list for the <varname>datatype</varname> grammar rule?
			</para>
			<para>
				To do so, open <filename>my.dsl.editor/src/org.example.dsl/ContentAssist.ext</filename>
				and insert the following lines at the end of the file:
			</para>
			<programlisting>
/* proposals for Feature DataType::name */
List[Proposal] completeDataType_name<co id="extension.name" />(emf::EObject ctx, String prefix) :
	{
		newProposal("String"), 
		newProposal("Date"), 
		newProposal("Boolean"), 
		newProposal("Long"), 
		newProposal("int")
	};
			</programlisting>
			<calloutlist>
				<callout arearefs="extension.name">
					<para>
						The name of he extension function must match the following rule:
						<emphasis role="bold">complete&lt;name of the metatype&gt;_&lt;name of the attribute to be completed&gt;</emphasis>.
						In this sample, the extension function will be invoked as soon as the user 
						requests content assist for the name of a <emphasis role="bold">DataType</emphasis>.
					</para>
				</callout>
			</calloutlist>
			<para>
				After saving the extension file, the DSL editor display the new proposals: 
			</para>
			<figure id="enhanced_CA">
				<title>Enhanced content assist in action</title>
				<mediaobject>
					<imageobject role="fo">
						<imagedata fileref="images/7_enhanced_CA.png"
							scale="60" />
					</imageobject>
					<imageobject role="html">
						<imagedata fileref="images/7_enhanced_CA.png" />
					</imageobject>
				</mediaobject>
			</figure>
		</section>
		<section id="refining_checks">
			<title>Defining constraints for your model</title>
			<para>
				You may have noticed that although the generated DSL editor detects syntax violations
				in your models, it is still possible to define illegal models, e.g. by defining
				several datatype definitions with the same name.
			</para>
			<para>
				The <emphasis>Check</emphasis> language from the openArchitectuerWare stack can be 
				used to define constraints that ensure the validity of your models.
			</para>
			<para>
				Let's define a constraint that ensures that a model does not contain more than one
				data type with the same name. To do so, open <filename>my.dsl/src/org.example.dsl/Checks.chk</filename> 
				and add the following contraint to the end of the file:
			</para>
			<programlisting>
context Type ERROR "Duplicate type detected: " + this.name :
	allElements()<co id="allElements" />.typeSelect(Type)<co id="typeSelect"/>.select(e|e.name == this.name).size ==1;
			</programlisting>
			<para>
				This constraint basically means the following:
				<itemizedlist>
					<listitem>
						<para>
							From the collection of <emphasis>all model elements</emphasis>,
						</para>
					</listitem>
					<listitem>
						<para>
							select all elements that are of type <emphasis role="bold">Type</emphasis> (i.e, all
							<emphasis role="bold">DataTypes</emphasis> and all <emphasis role="bold">Entities</emphasis>).
						</para>
					</listitem>
					<listitem>
						<para>
							Of the resulting collection, select all elements whose name equals the
							name of the current <emphasis role="bold">Type</emphasis>.
						</para>
					</listitem>
					<listitem>
						<para>
							Finally, check whether the size of the resulting collection is exactly one (1).
						</para>
					</listitem>
				</itemizedlist>
				In other words: each model may only have exactly one <emphasis role="bold">Type</emphasis> with the same name.
			</para>
			<para>
				After saving the check file, the DSL editor now issues an error if you enter two 
				types with the same name: 
			</para>
			<figure id="constraint_validation">
				<title>Constraint fails on duplicate data types</title>
				<mediaobject>
					<imageobject role="fo">
						<imagedata fileref="images/8_constraint_validation.png"
							scale="60" />
					</imageobject>
					<imageobject role="html">
						<imagedata fileref="images/8_constraint_validation.png" />
					</imageobject>
				</mediaobject>
			</figure>
		</section>
	</section>
	
	  <section>
    <title>Generating code</title>

    <para>Now, that we have a DSL, we may want to do something useful with it.
    DSLs are essentially small programming languages. A programming language
    has to be understandable by a computer. There are basically two ways to
    make a language "understandable" by a computer. The first one is to write
    a compiler which transforms expressions made in one language into another
    language, which is already understandable by a computer. For example, a
    Java compiler transforms Java programs to bytecode programs. Bytecode is
    understandable, because there are VMs which translate expressions in Java
    bytecode into more native instructions. This is usually done at runtime.
    Translating a language at runtime is called interpretation (ignoring
    special cases like just-in-time compilation here).</para>

    <para>With Xtext, models one can either create a
    compiler (also called generator) or an interpreter. Although there are
    good reasons for both approaches, we will just discuss how one creates a
    generator in this tutorial.</para>

    <section>
      <title>Code generation with Xpand</title>

      <para>The Xtext wizard already created a generator
      project for us. We are going to write an Xpand
      template, which generates simple JavaBeans from our entities. It is
      assumed, that there is a Java data type corresponding to the data types
      used in the models (e.g. <emphasis role="bold">String</emphasis>). So, we do not
      need to care about mapping data types.</para>

      <para>So just open the Xpand template (<emphasis role="bold">Main.xpt</emphasis>) 
      and modify it like this:</para>

      <figure id="xtext_tutorial_xpand_tenplate">
        <title>Xpand template</title>

        <mediaobject>
          <imageobject role="fo">
            <imagedata fileref="images/9_xpand_template.png"
                       scale="60" />
          </imageobject>

          <imageobject role="html">
            <imagedata fileref="images/9_xpand_template.png" />
          </imageobject>
        </mediaobject>
      </figure>

      <para>The definition <emphasis role="bold">main</emphasis> is invoked from the
      workflow file. It is declared for elements of type
      <emphasis role="bold">mydsl::Model</emphasis>, which corresponds to the root node
      of our DSL models. Within this definition, another definition
      (<emphasis role="bold">javaBean</emphasis>) is called (<emphasis role="bold">«EXPAND
      javaBean...»</emphasis>) for each model element
      (<emphasis role="bold">...FOREACH...</emphasis>) contained in the reference
      '<emphasis role="bold">types</emphasis>' of <emphasis role="bold">Model</emphasis> 
      which is of type <emphasis role="bold">Entity</emphasis>.
      (<emphasis role="bold">typeSelect(Entity)</emphasis>).</para>

      <para>The definition <emphasis role="bold">javaBean</emphasis> is declared for
      elements of type <emphasis role="bold">Entity</emphasis>. In this definition, we
      open a file («FILE ...»). The path name of the file is defined by an
      expression. In this case, it corresponds to the name of the entity
      suffixed with '<filename>.java</filename>'. It is going to be generated
      into the <filename>src-gen</filename> directory directly.</para>

      <para>All text contained between <emphasis role="bold">«FILE ...»</emphasis> and
      <emphasis role="bold">«ENDFILE»</emphasis> will go to the new file.
      <emphasis>Xpand</emphasis> provides control statements
      (<emphasis role="bold">FOR</emphasis>, <emphasis role="bold">IF</emphasis>,
      <emphasis role="bold">ELSEIF</emphasis>, ...), as well as evaluation of expression, in
      order to create the desired code. See the openArchitectureWare reference  
      documentation for details.</para>
      
      <para>To see our template in action, we have to run the code generator:
      	<itemizedlist>
			<listitem>
				<para>
					Locate the oAW workflow file <emphasis>mydslproject.oaw</emphasis> in 
					your <emphasis>mydslproject</emphasis> plug-in. 
				</para>
			</listitem>
			<listitem>
				<para>
					Right-click on it and choose 
					<emphasis role="bold">Run as > oAW Workflow</emphasis> from the context
					menu.
				</para>
			</listitem>
			<listitem>
				<para>
					You can see the generator running and logging into the 
					<emphasis>Console</emphasis> view.
				</para>
			</listitem>
			<listitem>
				<para>
					The result will be stored in a new source folder 
					<emphasis>src-gen</emphasis> in the <emphasis>mydslproject</emphasis> 
					project.
				</para>
			</listitem>
		</itemizedlist>
      </para>
      
    </section>
  </section>
	
  <section>
  	<title>Where to go from here...</title>
	<para>
	This tutorial ends here, but there is a lot more to know about Xtext, Xpand, DSLs and EMP, e.g.
	<itemizedlist>
		<listitem>
			<simpara>
				Advanced model customization: References to elements outside the model, 
				configurable linking of cross-references, etc.
			</simpara>
		</listitem>
		<listitem>
			<simpara>
				Further customizing of the editor: Choosing font styles, defining multiple 
				outline views etc.
			</simpara>
		</listitem>
		<listitem>
			<simpara>
				Integration with the Eclipse Modeling Framework (EMF), and thereby opening 
				to the whole world of eclipse modeling.
			</simpara>
		</listitem>
	</itemizedlist>
	Please consult the openArchitectureWare reference documentation 
	<xref linkend="oaw_reference_documentation"/> for further information.
	</para>
  </section>

  <bibliography>
		<title>Resources</title>
		<biblioentry id="java_download">
			<title>Sun's Java SDK</title>
			<bibliosource>
				<ulink  url="http://java.sun.com/javase/downloads/index.jsp">
					http://java.sun.com/javase/downloads/index.jsp
				</ulink>
			</bibliosource>
		</biblioentry>
		<biblioentry id="eclipse_europa">
			<title>Eclipse 3.3</title>
			<bibliosource>
				<ulink url="http://www.eclipse.org/europa/">
					http://www.eclipse.org/europa/
				</ulink>
			</bibliosource>
		</biblioentry>
		<biblioentry id="oaw_download">
			<title>openArchitectureWare download page</title>
			<bibliosource>
				<ulink url="http://www.eclipse.org/gmt/oaw/download/">
					http://www.eclipse.org/gmt/oaw/download/
				</ulink>
			</bibliosource>
		</biblioentry>
		<biblioentry id="oaw_update_site">
			<title>openArchitectureWare update site</title>
			<bibliosource>
				<ulink  url="http://www.openarchitectureware.org/updatesite/milestone/site.xml">
					http://www.openarchitectureware.org/updatesite/milestone/site.xml
				</ulink>
			</bibliosource>
		</biblioentry>
		<biblioentry id="oaw_reference_documentation">
			<title>openArchitectureWare reference documentation</title>
			<bibliosource>
				<ulink url="http://www.eclipse.org/gmt/doc/">
					http://www.eclipse.org/gmt/doc/
				</ulink>
			</bibliosource>
		</biblioentry>
		<biblioentry id="solution">
			<title>Source code for the sample developed in this article</title>
			<bibliosource>
				<ulink url="solution/mydsl.zip">
					mydsl.zip
				</ulink>
			</bibliosource>
		</biblioentry>
	</bibliography>
</article>