directory-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From oer...@apache.org
Subject svn commit: r525948 [1/2] - in /directory/sandbox/oersoy/guides/das.ldap.design.documentation: ./ META-INF/ source/ source/concepts/ source/concepts/0/ src/ src/main/ src/main/resources/ src/main/resources/css/ src/main/resources/images/ target/ target...
Date Thu, 05 Apr 2007 19:38:44 GMT
Author: oersoy
Date: Thu Apr  5 12:38:41 2007
New Revision: 525948

URL: http://svn.apache.org/viewvc?view=rev&rev=525948
Log:
Newer DAS Design Guide Material

Added:
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/META-INF/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/META-INF/MANIFEST.MF
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/about.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/org.apache.tuscany.das.ldap.design.documentation.toc.xml
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/plugin.xml
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/pom.xml
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts00.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts01.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts02.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/recipes.xml
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/book.css
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/recipes.css
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/images/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/images/123.png   (with props)
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/classes/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe00.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe01.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe10.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe11.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe12.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe20.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe21.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe22.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe23.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipexx.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe30.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe31.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe32.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe33.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe34.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe13.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe40.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe50.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe51.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe52.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex0.html
    directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex1.html

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/META-INF/MANIFEST.MF?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/META-INF/MANIFEST.MF (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/META-INF/MANIFEST.MF Thu Apr  5 12:38:41 2007
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-Name: %pluginName
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Vendor: %providerName
+Bundle-ManifestVersion: 2
+Bundle-Localization: plugin
+Bundle-SymbolicName: org.apache.tuscany.das.ldap.design.documentation; singleton:=true
+Require-Bundle: org.eclipse.help
+Bundle-Version: 1.0.0
+Eclipse-LazyStart: true
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/about.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/about.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/about.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/about.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,34 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+
+<h2>About This Content</h2>
+ 
+<p>February 12, 2007</p>	
+<h3>License</h3>
+
+<p>
+All content ("Content") in this plug-in is made available
+by the The Apache Software Foundation.  The Content is provided 
+under the terms and conditions of the Apache Public License Version 2.0 ("ASL")
+unless otherwise indicated.  A copy of the ASL can be obtained via the URL
+<a href="http://www.apache.org/licenses/LICENSE-2.0.html">http://www.apache.org/licenses/LICENSE-2.0.html</a>.
+</p>
+
+<p>
+If the Content was obtained from a party other than the Apache Software Foundation, the Content is 
+being redistributed by that party ("Redistributor") and different terms and conditions may
+apply to your use of any object code in the Content.
+Contact the Redistributor or check the Redistributor's license if one was 
+provided with the Content.  Unless otherwise
+expressed below, the conditions and terms of the ASL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.apache.org/">http://www.apache.org</a>.
+</p>
+
+</body>
+</html>

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/org.apache.tuscany.das.ldap.design.documentation.toc.xml
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/org.apache.tuscany.das.ldap.design.documentation.toc.xml?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/org.apache.tuscany.das.ldap.design.documentation.toc.xml (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/org.apache.tuscany.das.ldap.design.documentation.toc.xml Thu Apr  5 12:38:41 2007
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="LDAP DAS Design Guide">	
+			<topic label="Initializing the LDAP Servers">
+				<topic label="
+				Supporting the Base DN Used by the DAS
+			" href="target/html/recipes/0/recipe00.html"/>
+				<topic label="Adding a Partition/Suffix to ApacheDS" href="target/html/recipes/0/recipe01.html"/>
+			</topic>	
+			<topic label="Initializing the DAS">
+				<topic label="Loading the Generator Model" href="target/html/recipes/1/recipe10.html"/>
+				<topic label="
+				Providing the DAS With an Initial Context
+			" href="target/html/recipes/1/recipe11.html"/>
+				<topic label="
+				Providing the DAS With an Initial Context
+			" href="target/html/recipes/1/recipe12.html"/>
+			</topic>	
+			<topic label="Writing DataGraph Metadata">
+				<topic label="
+				Creating Metadata OID Values (Namespacing LDAP Metadata)
+			" href="target/html/recipes/2/recipe20.html"/>
+				<topic label="Creating the LDAP Syntax Entry" href="target/html/recipes/2/recipe21.html"/>
+				<topic label="
+				Creating an LDAP AttributeType Metadata Entry
+			" href="target/html/recipes/2/recipe22.html"/>
+				<topic label="Creating an LDAP ObjectClass Entry" href="target/html/recipes/2/recipe23.html"/>
+				<topic label="
+				Writing an LDAP ObjectClass per EClass in the Model
+			" href="target/html/recipes/2/recipexx.html"/>
+			</topic>	
+			<topic label="Restoring DataGraph Metadata">
+				<topic label="Creating the Model's EPackage" href="target/html/recipes/3/recipe30.html"/>
+				<topic label="Setting the EPackage Namespace Prefix" href="target/html/recipes/3/recipe30.html"/>
+				<topic label="Setting the EPackage Namespace" href="target/html/recipes/3/recipe30.html"/>
+				<topic label="
+				Obtaining the Name of the DataObject Class
+			" href="target/html/recipes/3/recipe30.html"/>
+				<topic label="
+				Creating an Instance of the DataObject's Classifier
+			" href="target/html/recipes/3/recipe30.html"/>
+				<topic label="
+				Creating an Instance of the SDO DataObject's Type
+			" href="target/html/recipes/3/recipe31.html"/>
+				<topic label="
+				Getting the DataObject's Simple Properties from the LDAP
+				Entry
+			" href="target/html/recipes/3/recipe32.html"/>
+				<topic label="
+				Getting the DataObject's Complex Properties's Metadata
+			" href="target/html/recipes/3/recipe33.html"/>
+				<topic label="Adding the Root EClass's EAttributes" href="target/html/recipes/3/recipe34.html"/>
+			</topic>	
+			<topic label="Writing a DataGraph">
+				<topic label="Writing a DataGraph to ADS" href="target/html/recipes/4/recipe40.html"/>
+				<topic label="Creating an EReference Subcontext" href="target/html/recipes/4/recipe13.html"/>
+			</topic>	
+			<topic label="Restoring a DataGraph">
+				<topic label="Creating a DataObject Instance" href="target/html/recipes/5/recipe50.html"/>
+				<topic label="Setting a DataObject's Simple Properties" href="target/html/recipes/5/recipe51.html"/>
+				<topic label=" Setting the DataObject's Complex Properties" href="target/html/recipes/5/recipe52.html"/>
+			</topic>	
+			<topic label="Prototype Setup">
+				<topic label="Creating the Prototype Project" href="target/html/recipes/x/recipex0.html"/>
+				<topic label="
+				Adding the EMF Dependencies to the Build
+			" href="target/html/recipes/x/recipex1.html"/>
+			</topic>
+</toc>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/plugin.xml
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/plugin.xml?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/plugin.xml (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/plugin.xml Thu Apr  5 12:38:41 2007
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+<plugin 
+	name="das.ldap.design.documentation"
+	id="org.apache.tuscany.das.ldap.design.documentation"
+	version = "1.0.0"
+	provider= "org.apache.tuscany">
+  <!-- ====================================================================== -->
+  <!-- Define primary TOC                                                     -->
+  <!-- ====================================================================== -->
+  <extension point="org.eclipse.help.toc">
+    <toc file="org.apache.tuscany.das.ldap.design.documentation.toc.xml" primary="true"/>
+  </extension>
+</plugin>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/pom.xml
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/pom.xml?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/pom.xml (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/pom.xml Thu Apr  5 12:38:41 2007
@@ -0,0 +1,27 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.apache.tuscany</groupId>
+	<artifactId>das.ldap.design.documentation</artifactId>
+	<version>1.0</version>
+	<packaging>infocenter.recipes.documentation</packaging>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven</groupId>
+				<artifactId>documentation.recipes.mojo</artifactId>
+				<extensions>true</extensions>
+				<version>1.0-SNAPSHOT</version>
+				<executions>
+					<execution>
+						<id>generate</id>
+						<goals>
+							<goal>generate</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+</project>

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts00.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts00.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts00.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts00.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,58 @@
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Partition</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Concept</h2>
+
+<div class="content">
+	<p>Partition</p>
+</div>
+
+<h2>Summary</h2>
+
+<div class="content">
+	<p>A <i>Partition</i> is the minimum segment/path needed to define a DN</p>
+</div>
+
+<h2>Description</h2>
+
+<div class="content">
+<p>
+
+
+A Partition is a container for a DIT 
+that has a named root / naming context
+(also referred to as the partition suffix)
+expressed using DN syntax.  For example, the
+ApacheDS 1.5 default configuration contains partitions
+named as follows:
+<br/>
+<br/>
+cn=schema
+ou=system
+dc=example, dc=org
+<br/>
+<br/>
+A Partition also refers to the implementation of the
+ApacheDS java interfaces that is used to
+store the DIT contained by the partition.
+<br/>
+<br/>
+Thus developers may create an user their own partition
+
+</p>
+
+<h2>Related Concepts</h2>
+<h4>Naming Context</h4>
+<h4>Base DN</h4>
+<h4>DN</h4>
+<h4>Entry</h4>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts01.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts01.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts01.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts01.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,57 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Directory Entry</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Concept</h2>
+
+<div class="content">
+	<p>Directory Entry</p>
+</div>
+
+<h2>Summary</h2>
+
+<div class="content">
+	<p></p>
+</div>
+
+<h2>Description</h2>
+
+<div class="content">
+<p>
+            
+            Suppose the root package of the SDO model has the following
+            namespace:
+
+            </br>
+            </br>
+            <pre class="codeblock">  http://com.example.org/users/accounts</pre>
+            </br>
+            </br>
+
+            Thus we make the initial context:
+
+            </br>
+            </br>
+            <pre class="codeblock">  cn=accounts, cn=users, cn=org, cn=example, cn=com</pre>
+            </br>
+            </br>
+
+            The model root (DocumentRoot, or some other Class representing the root)
+            will be stored in the LDAP repository using this initial context to reference
+            it.
+            
+</p>
+
+<h2>Related Concepts</h2>
+<h4>Naming Context</h4>
+<h4>Base DN</h4>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts02.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts02.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts02.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/concepts/0/concepts02.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,57 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Directory Entry</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Concept</h2>
+
+<div class="content">
+	<p>Directory Entry</p>
+</div>
+
+<h2>Summary</h2>
+
+<div class="content">
+	<p></p>
+</div>
+
+<h2>Description</h2>
+
+<div class="content">
+<p>
+            
+            Suppose the root package of the SDO model has the following
+            namespace:
+
+            </br>
+            </br>
+            <pre class="codeblock">  http://com.example.org/users/accounts</pre>
+            </br>
+            </br>
+
+            Thus we make the initial context:
+
+            </br>
+            </br>
+            <pre class="codeblock">  cn=accounts, cn=users, cn=org, cn=example, cn=com</pre>
+            </br>
+            </br>
+
+            The model root (DocumentRoot, or some other Class representing the root)
+            will be stored in the LDAP repository using this initial context to reference
+            it.
+            
+</p>
+
+<h2>Related Concepts</h2>
+<h4>Naming Context</h4>
+<h4>Base DN</h4>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/recipes.xml
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/recipes.xml?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/recipes.xml (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/source/recipes.xml Thu Apr  5 12:38:41 2007
@@ -0,0 +1,1110 @@
+<?xml version="1.0" encoding="ASCII"?>
+<recipes xmlns="http://maven.apache.org/documentation/recipes/1.0.0"
+	label="LDAP DAS Design Guide">
+	<recipeGroup id="0" label="Initializing the LDAP Servers">
+		<recipe id="00">
+			<challenge>
+				Supporting the Base DN Used by the DAS
+			</challenge>
+			<solution>Update the Servers Configuration File</solution>
+			<discussion>
+				<![CDATA[
+			Suppose the root instance of the SDO DataGraph
+			will be stored in an entry defined by the 
+			following DN:
+            <pre class="codeblock">  DN: cn=accounts, cn=users, cn=example, cn=com</pre>
+			A partition associated with the RDN <i>cn=com</i>
+			will need to be added to the servers configuration
+			before the subcontext
+			<i>cn=example</i>
+			can be added programmatically, along the remaining subcontexts
+			required to compose the base DN.
+			<br></br>
+			<br></br>
+			The related challenges section contains
+			links describing how to add partitions
+			to various ldap servers.
+            ]]>
+			</discussion>
+			<relatedRecipeDescriptor id="01" />
+		</recipe>
+		<recipe id="01">
+			<challenge>Adding a Partition/Suffix to ApacheDS</challenge>
+			<solution>Update the Servers Configuration File</solution>
+			<discussion>
+				<![CDATA[
+			To add the partition <i>cn=com</i> 
+			locate the following xml block in ApacheDS's
+			server.xml configuration file:
+			</br>
+            <pre class="codeblock">
+ &lt;property name="contextPartitionConfigurations"&gt;
+   &lt;set&gt;
+     &lt;ref bean="examplePartitionConfiguration"/&gt;
+   &lt;/set&gt;
+ &lt;/property&gt;</pre>
+            </br>
+			Add another ref element so that the 
+			xml block now looks like this:
+			</br>
+			</br>
+            <pre class="codeblock">
+ &lt;property name="contextPartitionConfigurations"&gt;
+   &lt;set&gt;
+     &lt;ref bean="examplePartitionConfiguration"/&gt;
+     &lt;ref bean="comPartitionConfiguration"/&gt;
+   &lt;/set&gt;
+ &lt;/property&gt;</pre>
+            </br>
+            </br>
+			Then add another partition configuration
+			block below the partition configuration xml block
+			that looks like this:
+			</br>
+            <pre class="codeblock">
+&lt;bean id="examplePartitionConfiguration" 
+class="org.apache.directory.server.core.partition.impl.btree.MutableBTreePartitionConfiguration"&gt;
+    &lt;property name="name" value="example" /&gt;
+    &lt;property name="cacheSize" value="100"/&gt;
+    &lt;property name="suffix" value="dc=example,dc=com" /&gt;
+    &lt;property name="optimizerEnabled" value="true" /&gt;
+    &lt;property name="synchOnWrite" value="true" /&gt;
+    &lt;property name="indexedAttributes"&gt;
+      &lt;set&gt;
+        &lt;bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"&gt;
+          &lt;property name="attributeId" value="dc" /&gt;
+          &lt;property name="cacheSize" value="100" /&gt;
+        &lt;/bean&gt;
+        ...
+        &lt;bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"&gt;
+          &lt;property name="attributeId" value="objectClass" /&gt;
+          &lt;property name="cacheSize" value="100" /&gt;
+        &lt;/bean&gt;
+      &lt;/set&gt;
+    &lt;/property&gt;
+    &lt;property name="contextEntry"&gt;
+      &lt;value&gt;
+        objectClass: top
+        objectClass: domain
+        objectClass: extensibleObject
+        dc: example
+      &lt;/value&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;</pre>
+			</br>
+			</br>
+			The properties should be set as follows:
+			</br>
+			</br>
+            <pre class="codeblock">
+&lt;bean id="comPartitionConfiguration" 
+class="org.apache.directory.server.core.partition.impl.btree.MutableBTreePartitionConfiguration"&gt;
+    &lt;property name="name" value="com" /&gt;
+    &lt;property name="cacheSize" value="100"/&gt;
+    &lt;property name="suffix" value="dc=com" /&gt;
+    &lt;property name="optimizerEnabled" value="true" /&gt;
+    &lt;property name="synchOnWrite" value="true" /&gt;
+    &lt;property name="indexedAttributes"&gt;
+      &lt;set&gt;
+        &lt;bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"&gt;
+          &lt;property name="attributeId" value="dc" /&gt;
+          &lt;property name="cacheSize" value="100" /&gt;
+        &lt;/bean&gt;
+        ...
+        &lt;bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"&gt;
+          &lt;property name="attributeId" value="objectClass" /&gt;
+          &lt;property name="cacheSize" value="100" /&gt;
+        &lt;/bean&gt;
+      &lt;/set&gt;
+    &lt;/property&gt;
+    &lt;property name="contextEntry"&gt;
+      &lt;value&gt;
+        objectClass: top
+        objectClass: domain
+        objectClass: extensibleObject
+        dc: example
+      &lt;/value&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;</pre>
+			</br>
+			</br>
+			When the ApacheDS is restarted, the com 
+			partition will be loaded.
+			]]>
+			</discussion>
+		</recipe>
+	</recipeGroup>
+
+	<recipeGroup id="1" label="Initializing the DAS">
+
+		<recipe id="10">
+			<challenge>Loading the Generator Model</challenge>
+			<solution>
+				Set the Required Parameters on the DASConfig Instance
+			</solution>
+			<discussion>
+				<![CDATA[
+            The Generator Model is the model
+            used to generate static java interfaces
+            and implementations for the model's
+            DataObjects.
+            </br>
+            </br>
+            When code generation is used to 
+            define the model classes, 
+            DASConfig.loadGeneratorModel() 
+            is used to load the generator resource
+            containing the code generation parameters.
+            </br>
+            </br>
+            When generating static java interfaces based 
+            on a model, the DAS uses the basePackage 
+            attribute and the prefix attribute defined
+            on the generator model to load the model's
+            classes.
+            </br>
+            </br>
+            In order to load the generator model
+            the following DASConfig attributes must be set:
+            <ul>
+            <li>
+            </li>genModelName<li>
+            </li>jarName<li>
+            <li>repositoryBase</li>
+            </ul>
+            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="11">
+			<challenge>
+				Providing the DAS With an Initial Context
+			</challenge>
+			<solution>Use DASConfig's initialContext Property</solution>
+			<discussion>
+				<![CDATA[
+            This approach is used when the DAS is using the 
+            dynamic Data Object API to create the DataObjects.
+            </br>
+            </br>
+            The DAS will use the <i>initialContext</i> property
+            on the DASConfig class.  To initialize
+            this property, specify it in the configuration
+            as follows:
+            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="12">
+			<challenge>
+				Providing the DAS With an Initial Context
+			</challenge>
+			<solution>Use the package namespace.</solution>
+			<discussion>
+				<![CDATA[
+            This approach is used when static java interfaces
+            have been created using a generator model. 
+            The DAS configuration loads the generator
+            model resource, and then gets the model package
+            namespace from it.
+            </br>
+            </br>
+            If the root package of the SDO model has the following
+            namespace:
+
+            </br>
+            </br>
+            <pre class="codeblock">  http://example.com/users/accounts</pre>
+            </br>
+            </br>
+
+            The initial context is:
+            </br>
+            </br>
+            <pre class="codeblock">  cn=accounts, cn=users, cn=example, cn=com</pre>
+            </br>
+            </br>
+            ]]>
+			</discussion>
+		</recipe>
+	</recipeGroup>
+
+	<recipeGroup id="2" label="Writing DataGraph Metadata">
+
+		<recipe id="20">
+			<challenge>
+				Creating Metadata OID Values (Namespacing LDAP Metadata)
+			</challenge>
+			<solution>Use the model package namespace.</solution>
+			<discussion>
+				<![CDATA[
+    			TODO - Alex's checksum idea
+
+    			TODO - Add Emmanuel's Ascii charachter idea.
+    			
+    			First either strip illegal characters from the package namespace and use
+    			that as the globally unique OID or produce a checksum of the package namespace
+    			and use that as the globally unique OID.
+    			</br>
+    			</br>
+    			Then creates a branch per LDAP Metadata Item 
+    			(Syntax, AttributeType, ObjectClass, etc.)
+    			by adding an integer onto the globally unique OID.
+    			</br>
+    			</br>
+    			Then add another integer onto the branch for each
+    			Metadata Item to be created, creating a unique namespace
+    			for that Metadata Item.
+    			
+    			
+    			
+    			Scratched
+    			==========================================================================
+    			The DAS has preconfigured Private Enterprise Numbers (PENs)
+    			branches per supported LDAP Server.  
+    			</br>
+  				</br>
+  				There is one branch for LDAP Syntax entries, one for 
+  				LDAP AttributeType entries, and one for ObjectClass entries.
+  				</br>
+  				</br>
+  				The DAS uses these branches, along with the model's 
+  				package namespace, when creating new LDAP metadata entries.
+  				</br>
+  				</br>
+  				Hence the the convention used to define the LDAP namespace
+  				(An OID string) is to append to the globally unique OID for the 
+  				LDAP Metadata Item (TODO - Define Metadata Item as an either an
+  				ObjectClass, AttributeType, Syntax, Control, etc.) the model packages
+  				namespace. appending
+  				the package namespace If a new DataType is being used by a property of the 
+  				a DataObject instance, the DAS will add the DataType's
+  				corresponding Syntax using the DataType's package namespace,
+  				along with the LDAP Server's OID for Syntax entries. to create 
+  				]]>
+			</discussion>
+		</recipe>
+		<recipe id="21">
+			<challenge>Creating the LDAP Syntax Entry</challenge>
+			<solution>Use JNDI</solution>
+			<discussion>
+				<![CDATA[
+  				The <i>name</i> attribute (simple property) of an LDAP
+  				Syntax entry corresponds
+  				to the <i>name</i> member of the SDO DataType class.
+  				</br>
+  				</br>
+  				A syntax entry is defined by three attributes:
+  				- description
+  				- OID
+  				- Name
+  				These must all be unique with respect to
+  				their context siblings within the LDAP server.
+				Creating a globally unqiue OID requires 
+  				a Private Enterprise Number (PEN), which can be
+  				obtained from IANA.  The PEN is then pre fixed to
+  				another integer (or combination of integers separated 
+  				by periods), and the combination of the two 
+  				make a unique identifier for the Syntax.
+  				</br>
+  				</br>
+  				The following example shows how to define a 
+  				syntax entry for "java.lang.String" in ApacheDS:
+  				</br>
+  				</br>
+	            <pre class="codeblock">
+private static final String APACHEDS_LDAP_SCHEMA_OID_SYNTAX_BRANCH = "1.3.6.1.4.1.18060.0.4.X.0";
+private static final String APACHEDS_LDAP_SCHEMA_JAVA_STRING_LOCAL_SYNTAX_OID = "java.lang.String";
+private static final String APACHEDS_LDAP_SCHEMA_JAVA_STRING_GLOBAL_SYNTAX_OID = APACHEDS_LDAP_SCHEMA_SYNTAX_OID_BRANCH +"." + JAVA_STRING_SYNTAX_LOCAL_OID;
+...
+Attributes ldapAttributes = new AttributesImpl();
+Attribute objectClass = new AttributeImpl(
+	SystemSchemaConstants.OBJECT_CLASS_AT, 
+	"top" );
+objectClass.add( MetaSchemaConstants.META_TOP_OC );
+objectClass.add( MetaSchemaConstants.META_SYNTAX_OC );
+ldapAttributes.put( objectClass );
+ldapAttributes.put( MetaSchemaConstants.M_OID_AT, APACHEDS_LDAP_SCHEMA_JAVA_STRING_GLOBAL_SYNTAX_OID );
+ldapAttributes.put( MetaSchemaConstants.M_DESCRIPTION_AT, APACHEDS_LDAP_SCHEMA_JAVA_STRING_LOCAL_SYNTAX_OID );
+
+String EStringSyntaxRDN = "MetaSchemaConstants.M_OID_AT + "=" + APACHEDS_LDAP_SCHEMA_JAVA_STRING_GLOBAL_SYNTAX_OID;
+			    
+//With the current context being "ou=syntaxes,ou=schema"
+ctx.createSubcontext(EStringSyntaxRDN, ldapAttributes);
+	            </pre>
+    	        </br>
+        	    </br>
+    			]]>
+			</discussion>
+		</recipe>
+		<recipe id="22">
+			<challenge>
+				Creating an LDAP AttributeType Metadata Entry
+			</challenge>
+			<solution>Use JNDI</solution>
+			<discussion>
+				<![CDATA[
+    			The LDAP AttributeType corresponds to the SDO
+    			DataType.
+    			</br>
+  				</br>
+  				Here's an example of how to create LDAP AttributeType
+  				for the Ecore EString DataType:
+  				</br>
+  				</br>
+	            <pre class="codeblock">
+
+...
+Attributes ldapAttributes = new AttributesImpl();
+Attribute objectClass = new AttributeImpl(
+	SystemSchemaConstants.OBJECT_CLASS_AT, 
+	"top" );
+objectClass.add( MetaSchemaConstants.META_TOP_OC );
+objectClass.add( MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC );
+ldapAttributes.put( objectClass );
+ldapAttributes.put( MetaSchemaConstants.M_NAME_AT, "baseDN");
+ldapAttributes.put( MetaSchemaConstants.M_OID_AT, SOME_GLOBAL_OID );//A trigger in ApacheDS will add this.
+ldapAttributes.put( MetaSchemaConstants.M_DESCRIPTION_AT, "baseDN member of org.tuscany.das.ldap.config.DASConfig" );
+ldapAttributes.put( MetaSchemaConstants.M_EQUALITY_AT, "caseIgnoreMatch" );
+ldapAttributes.put( MetaSchemaConstants.M_SINGLE_VALUE_AT, "FALSE" );
+ldapAttributes.put( MetaSchemaConstants.M_USAGE_AT, "directoryOperation" );
+
+String EStringSyntaxRDN = "MetaSchemaConstants.M_OID_AT + "=" + SOME_GLOBAL_OID;
+			    
+//With the current context being "ou=attributeTypes,ou=schema"
+ctx.createSubcontext(EStringSyntaxRDN, ldapAttributes);
+	            </pre>
+    	        </br>
+        	    </br>
+  				
+    			]]>
+			</discussion>
+		</recipe>
+		<recipe id="23">
+			<challenge>Creating an LDAP ObjectClass Entry</challenge>
+			<solution>Use JNDI</solution>
+			<discussion>
+				<![CDATA[
+    			The LDAP ObjectClass corresponds 
+    			to an SDO Type or EMF EClass.
+    			</br>
+  				</br>
+  				Here's an example of how to create an LDAP ObjectClass
+  				for the org.tuscany.das.ldap.config.DASConfig EClass:
+  				</br>
+  				</br>
+	            <pre class="codeblock">
+...
+Attributes ldapAttributes = new AttributesImpl();
+Attribute objectClass = new AttributeImpl(
+	SystemSchemaConstants.OBJECT_CLASS_AT, 
+	"top" );
+objectClass.add( MetaSchemaConstants.META_TOP_OC );
+objectClass.add( MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC );
+ldapAttributes.put( objectClass );
+ldapAttributes.put( MetaSchemaConstants.M_NAME_AT, "DASConfig");
+ldapAttributes.put( MetaSchemaConstants.M_DESCRIPTION_AT, "org.tuscany.das.ldap.config.DASConfig");
+ldapAttributes.put( MetaSchemaConstants.M_TYPE_OBJECT_CLASS_AT, "STRUCTURAL" );
+ldapAttributes.put( MetaSchemaConstants.M_MUST_AT, "cn" );
+ldapAttributes.put( MetaSchemaConstants.M_MAY_AT, "ou" );
+
+String EStringSyntaxRDN = "MetaSchemaConstants.M_OID_AT + "=" + SOME_GLOBAL_OID;
+			    
+//With the current context being "ou=attributeTypes,ou=schema"
+ctx.createSubcontext(EStringSyntaxRDN, ldapAttributes);
+	            </pre>
+    	        </br>
+        	    </br>
+  				
+    			]]>
+			</discussion>
+		</recipe>
+
+
+
+
+
+
+		<recipe id="xx">
+			<challenge>
+				Writing an LDAP ObjectClass per EClass in the Model
+			</challenge>
+			<solution>
+				Use the LDAP Server's Dynamic Schema Capabilities
+			</solution>
+			<discussion>
+				<![CDATA[
+            
+            First create a new ObjectClass representing the SDO Type (Class)
+            and add it to a new instance of LDAP attributes.
+
+            </br>
+            </br>
+            <pre class="codeblock">
+  Attributes ldapAttributes = new AttributesImpl();
+  Attribute objectClass = new AttributeImpl( SystemSchemaConstants.OBJECT_CLASS_AT, eClass.getName() );
+  objectClass.add( MetaSchemaConstants.META_TOP_OC );
+  objectClass.add( MetaSchemaConstants.META_OBJECT_CLASS_OC );
+  ldapAttributes.put( objectClass ); 
+            </pre>
+            </br>
+            </br>
+
+            Then add the EAttributes of the EClass to the LDAP attributes list.
+
+            </br>
+            </br>
+            <pre class="codeblock">
+  EList eAttributes = eClass.getEAllAttributes();
+  Iterator<EAttribute> eAttributeIterator = eAttributes.iterator();
+  while(eAttributeIterator.hasNext() )
+  {
+  	EAttribute eAttribute = eAttributeIterator.next();
+  	if ( eAttributes.isRequired() )
+  	{
+   	ldapAttributes.put( MetaSchemaConstants.M_MUST_AT, eAttribute.getName() ); 
+  	}
+  	else
+  	{
+  		ldapAttributes.put( MetaSchemaConstants.M_MAY_AT, eAttribute.getName() );
+  	}
+  }
+            </pre>
+            </br>
+            </br>
+
+
+            For each EReference on the EClass, that is 
+            not a multiplicity many EReference,
+            we will create another ldap attribute
+            using the following naming convention:
+
+            </br>
+            </br>
+            <pre class="codeblock">  EReference.getName() + "EReference"</pre>
+            </br>
+            </br>
+            
+            If the EReference is a multiplicity many
+            reference then the naming convention used
+            is:
+            
+
+            </br>
+            </br>
+            <pre class="codeblock">  EReference.getName() + "EReferenceMany"</pre>
+            </br>
+            </br>
+            
+            If the EReference ldap attribute 
+            is multiplicity many, it will
+            store the size of the EList containing
+            the references.
+            
+            If it is not multiplicity many,
+            it will just store a boolean indicating 
+            whether the reference was set or not.
+            
+            Thus we iterate through all the 
+            EReferences of the EClass adding them like
+            this:
+            
+            <br/>
+            <br/>
+            <pre class="codeblock">
+  EList eReferences = eClass.getEAllReferences();
+  Iterator<EReference> eReferenceIterator = references.iterator();
+  while(eReferenceIterator.hasNext() )
+  {
+  	EReference eReference = eReferenceIterator.next();
+  	if ( eReference.isRequired() )
+  	{
+  		if ( eReference.isMany() )
+  		{
+  			ldapAttributes.put( MetaSchemaConstants.M_MUST_AT, eReference.getName() +  "EReferenceMany");
+  		}
+  		else
+  		{
+  			ldapAttributes.put( MetaSchemaConstants.M_MUST_AT, eReference.getName() +  "EReference");
+  		}
+  	}
+  	else
+  	{
+  		if ( eReference.isMany() )
+  		{
+  			ldapAttributes.put( MetaSchemaConstants.M_MAY_AT, eReference.getName() +  "EReferenceMany");
+  		}
+  		else
+  		{
+  			ldapAttributes.put( MetaSchemaConstants.M_MAY_AT, eReference.getName() +  "EReference");
+  		}
+  	}
+  }
+            </pre>
+            <br/>
+            <br/>
+            
+            Now when the LDAP DAS attempts to retrieve references it will
+            know where to look based on the convention discussed in the READ-TODO
+            recipe, and it will know how many to retrieve based on the value stored
+            in the reference attribute.
+            ]]>
+			</discussion>
+		</recipe>
+	</recipeGroup>
+
+	<recipeGroup label="Restoring DataGraph Metadata" id="3">
+		<recipe id="30">
+			<challenge>Creating the Model's EPackage</challenge>
+			<solution>
+				Use EcoreFactory.eINSTANCE.createEPackage()
+			</solution>
+			<discussion>
+				<![CDATA[
+            </br>
+            </br>
+            <pre class="codeblock">
+            EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage()</pre>
+            </br>
+            </br>
+            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="30">
+			<challenge>Setting the EPackage Namespace Prefix</challenge>
+			<solution>
+				Use values of the last two segments of the Root
+				DataObject's DN
+			</solution>
+			<discussion>
+				<![CDATA[
+            Note that this is only necessary when the 
+            DAS does not use a generator model.
+            </br>
+            </br>
+            If the DN of the root DataObject is 
+            </br>
+            </br>
+            <pre class="codeblock">
+            DN: cn=v100, cn=accounts, cn=users, cn=example, cn=com
+            </br>
+            </br>
+            The namespace prefix is set to:
+            </br>
+            </br>
+            <pre class="codeblock">
+            DN: cn=v100, cn=accounts, cn=users, cn=example, cn=com
+            </br>
+            </br>
+            The namespace prefix gets set to <i>AccountsV100</i>.
+            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="30">
+			<challenge>Setting the EPackage Namespace</challenge>
+			<solution>Use values of the Root DataObject's DN</solution>
+			<discussion>
+				<![CDATA[
+            Note that this is only necessary when the 
+            DAS does not use a generator model.
+            </br>
+            </br>
+            If the DN of the root DataObject is 
+            </br>
+            </br>
+            <pre class="codeblock">
+            DN: cn=v100, cn=accounts, cn=users, cn=example, cn=com
+            </br>
+            </br>
+            The package namespace gets set to:
+            </br>
+            </br>
+            <pre class="codeblock">
+            DN: cn=v100, cn=accounts, cn=users, cn=example, cn=com
+            </br>
+            </br>
+            The namespace prefix gets set to <i>accounts.v100</i>.
+            ]]>
+			</discussion>
+		</recipe>
+
+		<recipe id="30">
+			<challenge>
+				Obtaining the Name of the DataObject Class
+			</challenge>
+			<solution>Use the RDN</solution>
+			<discussion>
+				<![CDATA[
+            By convention the name of the DataObject stored corresponds
+            to the RDN of its entry.  So for the RDN:
+
+            </br>
+            </br>
+            <pre class="codeblock">  accounts</pre>
+            </br>
+            </br>
+
+            we would get our EClass or Type name like this this:
+
+            </br>
+            </br>
+            <pre class="codeblock">
+ String className = StringUtils.capitalize( JNDIUtils.getRDN(rootDataObjectDN) );  </pre>
+            </br>
+            </br>
+            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="30">
+			<challenge>
+				Creating an Instance of the DataObject's Classifier
+			</challenge>
+			<solution>
+				Use EcoreFactory.eINSTANCE.createEClass()
+			</solution>
+			<discussion>
+				<![CDATA[
+            </br>
+            </br>
+            <pre class="codeblock">
+            EClass eClass = EcoreFactory.eINSTANCE.createEClass();
+            eClass.setName()
+            </pre>
+            </br>
+            </br>
+
+            we would get our EClass or Type name like this this:
+
+            </br>
+            </br>
+            <pre class="codeblock">
+ String className = StringUtils.capitalize( JNDIUtils.getRDN(DN) );  </pre>
+            </br>
+            </br>
+            ]]>
+			</discussion>
+		</recipe>
+
+		<recipe id="31">
+			<challenge>
+				Creating an Instance of the SDO DataObject's Type
+			</challenge>
+			<solution>Use EcoreFactory.eINSTANCE</solution>
+			<discussion>
+				<![CDATA[
+            </br>
+            </br>
+            <pre class="codeblock">EClass eClass = EcoreFactory.eINSTANCE.createEClass()</pre>
+            </br>
+            </br>
+            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="32">
+			<challenge>
+				Getting the DataObject's Simple Properties from the LDAP
+				Entry
+			</challenge>
+			<solution>Use DirContext.getAttributes()</solution>
+			<discussion>
+				<![CDATA[
+            First get a list of all the attributes contained in the entry:
+            </br>
+            </br>
+            <pre class="codeblock">Attributes ldapAttributes = directoryContext.getAttributes(rootDataObjectDN);</pre>
+            </br>
+            </br>
+            
+            Then clone it, because we need both the complex type metadata, for 
+            retrieving DataObject references, and the
+            simple properties:
+
+            </br>
+            </br>
+            <pre class="codeblock">Attributes ldapAttributesClone = ldapAttributes.clone();</pre>
+            </br>
+            </br>
+            
+            Then delete the objectClass attribute from the ldapAttributes map:
+            
+            </br>
+            </br>
+            <pre class="codeblock">ldapAttributes.remove(SystemSchemaConstants.OBJECT_CLASS_AT);</pre>
+            </br>
+            </br>
+            
+            Then remove all the attributes whose name contains the word EReference.
+            
+            </br>
+            </br>
+            <pre class="codeblock">TODO Code</pre>
+            </br>
+            </br>
+            
+            We now have a map of the simple property names and their corresponding
+            values.
+            
+            </br>
+            </br>
+            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="33">
+			<challenge>
+				Getting the DataObject's Complex Properties's Metadata
+			</challenge>
+			<solution>Use DirContext.getAttributes()</solution>
+			<discussion>
+				<![CDATA[
+            First get a list of all the attributes contained in the entry:
+            </br>
+            </br>
+            <pre class="codeblock">Attributes ldapAttributes = directoryContext.getAttributes(rootDataObjectDN);</pre>
+            </br>
+            </br>
+            
+            </br>
+            </br>
+            <pre class="codeblock">Attributes ldapAttributesClone = ldapAttributes.clone();</pre>
+            </br>
+            </br>
+            
+            Then delete the objectClass attribute from the ldapAttributes map:
+            
+            </br>
+            </br>
+            <pre class="codeblock">ldapAttributes.remove(SystemSchemaConstants.OBJECT_CLASS_AT);</pre>
+            </br>
+            </br>
+            
+            Then if the attribute's name does not contain the String "EReference", 
+            we remove it.
+            
+            </br>
+            </br>
+            <pre class="codeblock">TODO Code</pre>
+            </br>
+            </br>
+            
+            We now have a map of the complex property names and their corresponding
+            meta data values.
+            </br>
+            </br>
+            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="34">
+			<challenge>Adding the Root EClass's EAttributes</challenge>
+			<solution>
+				Use the Simple Properties Attributes Map
+			</solution>
+			<discussion>
+				<![CDATA[
+            For each ldapAttribute in the entry, the DAS first creates 
+            an EAttribute instance, if one has not already been created 
+            and added to the model's EPackage.
+			<pre class="codeblock"> EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute(); </pre>
+            </br>
+            </br>
+            The EAttribute requires a DataType instance in order 
+            to set the the EAttribute's eType property, so the DAS
+            uses the name of the attributeType's Syntax OID
+            to lookup the DataType on the EPackage.  If the
+            DataType reference returned is null, the DAS creates 
+            the DataType and adds it to the EPackage.
+            </br>
+            </br>
+            The EAttribute instance also needs a name.  
+            The name of the EAttribute instance is the
+            name of the attributeType.
+            </br>
+            </br>
+            If the EAttribute instance is a multiplicity
+            many EAttribute, indicated by MetaSchemaConstants.M_SINGLE_VALUE_AT
+            property of the attributeType being set to false, the
+            EAttribute's upperBound property is set to "-1".
+            </br>
+            </br>
+            Lastly if the attributeType is a  
+            MetaSchemaConstants.M_MUST_AT attribute,
+            then the EAttribute required property is set to true.
+            </br>
+            </br>
+            ]]>
+			</discussion>
+		</recipe>
+	</recipeGroup>
+	
+	<recipeGroup label="Writing a DataGraph" id="4">
+		<recipe id="40">
+			<challenge>Writing a DataGraph to ADS</challenge>
+			<solution>
+				Use DAS.LDAP.write(eObject) [Just made it up]
+			</solution>
+			<discussion>
+				<![CDATA[
+            Creating a DataGraph in ADS means writing all the 
+            DataObjects contained in the graph to ADS,
+            along with their corresponding 
+            types (Classes), which correspond to ObjectClasses
+            in ADS.
+            
+            <br/>
+            <br/>
+            
+            To do this we first get the root DataObject
+            in the DataGraph.
+            
+            </br>
+            </br>
+            <pre class="codeblock">  EObject eObjectRoot = resource.getEObject("//@accounts");</pre>
+            </br>
+            </br>
+            
+            We also create the Directory Context
+            where this object will be stored
+            (using the convention discussed in the 
+            recipe <recipeLink id="00"/>) like this:
+
+	        </br>
+            </br>
+            <pre class="codeblock">
+  //I just made the below ctx method stuff up..
+  //will correct when coding :-) 
+  DirContext rootContext = DirContext.createContexts("cn=accounts, cn=users, cn=org, cn=example, cn=com");
+            </pre>
+            </br>
+            </br>
+            
+            Then we get the root object's type (EClass):
+            
+            </br>
+            </br>
+            <pre class="codeblock">  EClass eClass = eObjectRoot.eClass();</pre>
+            </br>
+            </br>
+            
+            Now we write the ObjectClass corresponding
+            to this EClass to ADS (See Related Recipes).
+
+            </br>
+            </br>
+            
+			Once the ObjectClass is added to ADS
+			we create a directory attributes list and 
+			add it like this:
+			
+			</br>
+            </br>
+            <pre class="codeblock">
+  Attributes ldapAttributes = new AttributesImpl();
+  ldapAttributes.put(SystemSchemaConstants.OBJECT_CLASS_NAME, eClass.getFullyQualifiedName() );            
+			</pre>
+            </br>
+            </br>
+            
+            Once this is done, we add the simple
+            properties contained in the DataObject
+            to a list of ldap attributes as follows.
+            
+            </br>
+            </br>
+            <pre class="codeblock">
+EList<EAttribute> eAttributes = eClass.getEAllAttributes();
+Iterator<EAttribute> attributeIterator = eAttributes.iterator();
+while ( attributeIterator.hasNext() )
+  {
+	  EAttribute eAttribute    = attributeIterator.next();
+	  EObject eAttributeObject = eObjectRoot.eGet(eAttribute);
+	
+	 ldapAttributes.put(eAttribute.getName(), eAttributeObject.toString() );
+  }
+          </pre>
+            </br>
+            </br>
+            
+            We must also add the directory attributes that contain
+            metadata (size() for multiplicity many EReferences and isSet() otherwise)
+            for the EReferences (Complex properties) on the
+            root object like this.
+            
+            </br>
+            </br>
+            <pre class="codeblock">
+  EList<EReference> eReferences = eClass.getEAllReferences();
+  Iterator<EReference> eReferenceIterator = eReferences.iterator();
+  while ( eReferenceIterator.hasNext() )
+  {
+	  EReference eReference    = eReferenceIterator.next();
+	  if (eReference.isMany())
+	  {
+		  if ( eObjectRoot.isSet(eReference) )
+		  {
+			  EList eReferenceList = eObjectRoot.eGet(eReference);
+ 		  ldapAttributes.put(eReference.getName(), eReferenceList.size() );
+		  }
+		  else
+		  {
+			  ldapAttributes.put(eReference.getName(), 0 );
+		  }
+	  }
+	  else
+	  {
+		  ldapAttributes.put(eReference.getName(), eObjectRoot.isSet(eReference);
+	  }
+  }
+            </pre>
+            </br>
+            </br>
+            
+            Finally we add the list of ldap attributes, effectively adding the 
+            root DataGraph object, to the server:
+            
+            </br>
+            </br>
+            <pre class="codeblock">
+  //I'm making this up too
+  ctx.addAttributes(ldapAttributes);
+            </pre>
+            </br>
+            </br>
+            ]]>
+			</discussion>
+			<relatedRecipeDescriptor id="11" />
+		</recipe>
+
+		<recipe id="13">
+			<challenge>Creating an EReference Subcontext</challenge>
+			<solution>
+				Use the JNDI InitialContext bind Operation
+			</solution>
+			<discussion>
+				<![CDATA[
+            We need to establish a subcontext for each EReference.
+            <br/>
+            <br/>
+            The subcontext naming convention used
+            is 
+            <br/>
+            <br/>
+            EReference.getName()
+            <br/>
+            <br/>
+            if the EReference is not a multiplicity many
+            EReference.
+            <br/>
+            <br/>
+            If the EReference is a multiplicity many EReference,
+            the convention used is: 
+            <br/>
+            <br/>
+            EReference.getName() + index
+            <br/>
+            <br/>
+            where index is an integer indicating 
+            where the EReference is stored on the EList of its
+            container.
+            <br/>
+            <br/>
+            Thus if our root object is getEObject("//account");
+            and it is stored here:
+            <br/>
+            <br/>
+            DN: cn=accounts, cn=users, cn=org, cn=example, cn=com
+            <br/>
+            and it has an non multiplicity many EReference
+            of type User named user, then user would be stored
+            here:
+            <br/>
+            <br/>
+            DN: cn=user, cn=accounts, cn=users, cn=org, cn=example, cn=com
+            <br/>
+            <br/>
+            If User was a multiplicity many EReference, and its index was 0,
+            it would be stored here:
+            <br/>
+            <br/>
+            DN: cn=user0, cn=accounts, cn=users, cn=org, cn=example, cn=com
+            <br/>
+            <br/>
+            So if there were 3 User EReferences stored on the multiplicity
+            many User EReference, then they would be stored under the following
+            contexts:
+            <br/>
+            <br/>
+            DN: cn=user0, cn=accounts, cn=users, cn=org, cn=example, cn=com
+            <br/>
+            DN: cn=user1, cn=accounts, cn=users, cn=org, cn=example, cn=com
+            <br/>
+            DN: cn=user2, cn=accounts, cn=users, cn=org, cn=example, cn=com
+            <br/>
+]]>
+			</discussion>
+		</recipe>
+		
+	</recipeGroup>
+
+	<recipeGroup label="Restoring a DataGraph" id="5">
+
+		<recipe id="50">
+			<challenge>Creating a DataObject Instance</challenge>
+			<solution>Use the RDN from the current directory context</solution>
+			<discussion>
+				<![CDATA[
+				First get the model's Factory from the EPackage.
+	            </br>
+	            </br>
+	            <pre class="codeblock">EFactory eFactory = modelEPackage.getFactory()</pre>
+	            </br>
+	            </br>
+	            Then create an instance of the 
+	
+	            Therefore we can get our model root object like this:
+	
+	            </br>
+	            </br>
+	            <pre class="codeblock">  EObject eObject = eFactory.create("FileUtils.capitalize(rdnValue);</pre>
+	            </br>
+	            </br>
+	            
+	            Note that if the rdnValue corresponds to a multiplicity many
+	            EReference then the integer at the end of the rdnValue must
+	            be removed.
+	            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="51">
+			<challenge>Setting a DataObject's Simple Properties</challenge>
+			<solution></solution>
+			<discussion>
+				<![CDATA[
+	            ]]>
+			</discussion>
+		</recipe>
+		<recipe id="52">
+			<challenge> Setting the DataObject's Complex Properties</challenge>
+			<solution></solution>
+			<discussion>
+				<![CDATA[
+	            ]]>
+			</discussion>
+		</recipe>
+	</recipeGroup>
+
+
+	<recipeGroup id="x" label="Prototype Setup">
+
+		<recipe id="x0">
+			<challenge>Creating the Prototype Project</challenge>
+			<solution>
+				Run mvn archetype:create -DartifactId=das.ldap.prototype -DgroupId=org.apache.tuscany
+			</solution>
+		</recipe>
+
+		<recipe id="x1">
+			<challenge>
+				Adding the EMF Dependencies to the Build
+			</challenge>
+			<solution>See Discussion</solution>
+			<discussion></discussion>
+		</recipe>
+	</recipeGroup>
+</recipes>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/book.css
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/book.css?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/book.css (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/book.css Thu Apr  5 12:38:41 2007
@@ -0,0 +1,106 @@
+body {
+  font-family: sans-serif;
+  font-size: 10pt;
+  background-color: white;
+  color: black;
+  max-width: 800px;
+}
+
+h1 {
+  font-size: 18pt;
+}
+
+h2 {
+  font-size: 16pt;
+}
+
+h3 {
+  font-size: 14pt;
+}
+
+h4 {
+  font-size: 12pt;
+}
+
+table {
+  font-size: 10pt;
+}
+
+th {
+  font-weight: bold;
+}
+
+kbd {
+  font-family: monospace;
+  font-weight: bold;
+}
+
+var {
+  font-style: italic;
+}
+
+ol {
+  margin-bottom: 1em;
+}
+
+dt {
+  font-weight: bold;
+  margin-top: 1em;
+}
+
+li {
+  margin-top: 1em;
+}
+
+span.control {
+  font-weight: bold;
+}
+
+span.name {
+  font-style: italic;
+  font-weight: bold;
+}
+
+span.action {
+  font-style: italic;
+}
+
+span.code {
+  font-family: monospace;
+}
+
+span.menu {
+  color: #660033;
+  font-weight: bold;
+}
+
+span.filefolder {
+  font-family: monospace;
+}
+
+blockquote {
+  background-color: #e8e8e8;
+  border: 1pt black;
+  margin: 2em; border: 1px solid black;
+  padding: 1em;
+}
+
+.tasks, .reference, .faq {
+  padding-left: 18px;
+  font-size: 14pt;
+  background-image:url(images/bullet14.png);
+  background-repeat: no-repeat;
+  background-position: left;
+ }
+
+
+pre
+{
+border-width:thin;
+border-style: solid;
+font-family: "Courier New", Courier, mono;
+font-style: normal;
+font-size: 12px;
+padding-top: 6px;
+padding-bottom: 6px;
+}
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/recipes.css
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/recipes.css?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/recipes.css (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/css/recipes.css Thu Apr  5 12:38:41 2007
@@ -0,0 +1,3 @@
+.notRequired {
+  color: #959595;
+}
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/images/123.png
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/images/123.png?view=auto&rev=525948
==============================================================================
Binary file - no diff available.

Propchange: directory/sandbox/oersoy/guides/das.ldap.design.documentation/src/main/resources/images/123.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe00.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe00.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe00.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe00.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,72 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Supporting the Base DN Used by the DAS
+			</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>
+				Supporting the Base DN Used by the DAS
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Update the Servers Configuration File</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+			Suppose the root instance of the SDO DataGraph
+			will be stored in an entry defined by the 
+			following DN:
+            <pre class="codeblock">  DN: cn=accounts, cn=users, cn=example, cn=com</pre>
+			A partition associated with the RDN <i>cn=com</i>
+			will need to be added to the servers configuration
+			before the subcontext
+			<i>cn=example</i>
+			can be added programmatically, along the remaining subcontexts
+			required to compose the base DN.
+			<br></br>
+			<br></br>
+			The related challenges section contains
+			links describing how to add partitions
+			to various ldap servers.
+            
+			</p>
+
+
+<h2>Related Challenges</h2>
+
+<table>
+	<tbody>
+		<tr>
+			<td>
+    			<a
+    				href="../0/recipe01.html">
+    				<img
+    					border="0" 
+    					title="Adding a Partition/Suffix to ApacheDS"
+    					alt="Adding a Partition/Suffix to ApacheDS"
+    					src="../../../../src/main/resources/images/123.png">
+    			</a>
+			</td>
+			<td>Adding a Partition/Suffix to ApacheDS</td>
+		</tr>
+	</tbody>
+</table>
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe01.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe01.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe01.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/0/recipe01.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,130 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Adding a Partition/Suffix to ApacheDS</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>Adding a Partition/Suffix to ApacheDS</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Update the Servers Configuration File</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+			To add the partition <i>cn=com</i> 
+			locate the following xml block in ApacheDS's
+			server.xml configuration file:
+			</br>
+            <pre class="codeblock">
+ &lt;property name="contextPartitionConfigurations"&gt;
+   &lt;set&gt;
+     &lt;ref bean="examplePartitionConfiguration"/&gt;
+   &lt;/set&gt;
+ &lt;/property&gt;</pre>
+            </br>
+			Add another ref element so that the 
+			xml block now looks like this:
+			</br>
+			</br>
+            <pre class="codeblock">
+ &lt;property name="contextPartitionConfigurations"&gt;
+   &lt;set&gt;
+     &lt;ref bean="examplePartitionConfiguration"/&gt;
+     &lt;ref bean="comPartitionConfiguration"/&gt;
+   &lt;/set&gt;
+ &lt;/property&gt;</pre>
+            </br>
+            </br>
+			Then add another partition configuration
+			block below the partition configuration xml block
+			that looks like this:
+			</br>
+            <pre class="codeblock">
+&lt;bean id="examplePartitionConfiguration" 
+class="org.apache.directory.server.core.partition.impl.btree.MutableBTreePartitionConfiguration"&gt;
+    &lt;property name="name" value="example" /&gt;
+    &lt;property name="cacheSize" value="100"/&gt;
+    &lt;property name="suffix" value="dc=example,dc=com" /&gt;
+    &lt;property name="optimizerEnabled" value="true" /&gt;
+    &lt;property name="synchOnWrite" value="true" /&gt;
+    &lt;property name="indexedAttributes"&gt;
+      &lt;set&gt;
+        &lt;bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"&gt;
+          &lt;property name="attributeId" value="dc" /&gt;
+          &lt;property name="cacheSize" value="100" /&gt;
+        &lt;/bean&gt;
+        ...
+        &lt;bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"&gt;
+          &lt;property name="attributeId" value="objectClass" /&gt;
+          &lt;property name="cacheSize" value="100" /&gt;
+        &lt;/bean&gt;
+      &lt;/set&gt;
+    &lt;/property&gt;
+    &lt;property name="contextEntry"&gt;
+      &lt;value&gt;
+        objectClass: top
+        objectClass: domain
+        objectClass: extensibleObject
+        dc: example
+      &lt;/value&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;</pre>
+			</br>
+			</br>
+			The properties should be set as follows:
+			</br>
+			</br>
+            <pre class="codeblock">
+&lt;bean id="comPartitionConfiguration" 
+class="org.apache.directory.server.core.partition.impl.btree.MutableBTreePartitionConfiguration"&gt;
+    &lt;property name="name" value="com" /&gt;
+    &lt;property name="cacheSize" value="100"/&gt;
+    &lt;property name="suffix" value="dc=com" /&gt;
+    &lt;property name="optimizerEnabled" value="true" /&gt;
+    &lt;property name="synchOnWrite" value="true" /&gt;
+    &lt;property name="indexedAttributes"&gt;
+      &lt;set&gt;
+        &lt;bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"&gt;
+          &lt;property name="attributeId" value="dc" /&gt;
+          &lt;property name="cacheSize" value="100" /&gt;
+        &lt;/bean&gt;
+        ...
+        &lt;bean class="org.apache.directory.server.core.partition.impl.btree.MutableIndexConfiguration"&gt;
+          &lt;property name="attributeId" value="objectClass" /&gt;
+          &lt;property name="cacheSize" value="100" /&gt;
+        &lt;/bean&gt;
+      &lt;/set&gt;
+    &lt;/property&gt;
+    &lt;property name="contextEntry"&gt;
+      &lt;value&gt;
+        objectClass: top
+        objectClass: domain
+        objectClass: extensibleObject
+        dc: example
+      &lt;/value&gt;
+    &lt;/property&gt;
+&lt;/bean&gt;</pre>
+			</br>
+			</br>
+			When the ApacheDS is restarted, the com 
+			partition will be loaded.
+			
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe10.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe10.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe10.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe10.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,63 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Loading the Generator Model</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>Loading the Generator Model</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>
+				Set the Required Parameters on the DASConfig Instance
+			</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            The Generator Model is the model
+            used to generate static java interfaces
+            and implementations for the model's
+            DataObjects.
+            </br>
+            </br>
+            When code generation is used to 
+            define the model classes, 
+            DASConfig.loadGeneratorModel() 
+            is used to load the generator resource
+            containing the code generation parameters.
+            </br>
+            </br>
+            When generating static java interfaces based 
+            on a model, the DAS uses the basePackage 
+            attribute and the prefix attribute defined
+            on the generator model to load the model's
+            classes.
+            </br>
+            </br>
+            In order to load the generator model
+            the following DASConfig attributes must be set:
+            <ul>
+            <li>
+            </li>genModelName<li>
+            </li>jarName<li>
+            <li>repositoryBase</li>
+            </ul>
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe11.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe11.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe11.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe11.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,45 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Providing the DAS With an Initial Context
+			</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>
+				Providing the DAS With an Initial Context
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use DASConfig's initialContext Property</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            This approach is used when the DAS is using the 
+            dynamic Data Object API to create the DataObjects.
+            </br>
+            </br>
+            The DAS will use the <i>initialContext</i> property
+            on the DASConfig class.  To initialize
+            this property, specify it in the configuration
+            as follows:
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe12.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe12.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe12.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/1/recipe12.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,59 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Providing the DAS With an Initial Context
+			</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>
+				Providing the DAS With an Initial Context
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use the package namespace.</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            This approach is used when static java interfaces
+            have been created using a generator model. 
+            The DAS configuration loads the generator
+            model resource, and then gets the model package
+            namespace from it.
+            </br>
+            </br>
+            If the root package of the SDO model has the following
+            namespace:
+
+            </br>
+            </br>
+            <pre class="codeblock">  http://example.com/users/accounts</pre>
+            </br>
+            </br>
+
+            The initial context is:
+            </br>
+            </br>
+            <pre class="codeblock">  cn=accounts, cn=users, cn=example, cn=com</pre>
+            </br>
+            </br>
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe20.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe20.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe20.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe20.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,80 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Creating Metadata OID Values (Namespacing LDAP Metadata)
+			</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>
+				Creating Metadata OID Values (Namespacing LDAP Metadata)
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use the model package namespace.</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+    			TODO - Alex's checksum idea
+
+    			TODO - Add Emmanuel's Ascii charachter idea.
+    			
+    			First either strip illegal characters from the package namespace and use
+    			that as the globally unique OID or produce a checksum of the package namespace
+    			and use that as the globally unique OID.
+    			</br>
+    			</br>
+    			Then creates a branch per LDAP Metadata Item 
+    			(Syntax, AttributeType, ObjectClass, etc.)
+    			by adding an integer onto the globally unique OID.
+    			</br>
+    			</br>
+    			Then add another integer onto the branch for each
+    			Metadata Item to be created, creating a unique namespace
+    			for that Metadata Item.
+    			
+    			
+    			
+    			Scratched
+    			==========================================================================
+    			The DAS has preconfigured Private Enterprise Numbers (PENs)
+    			branches per supported LDAP Server.  
+    			</br>
+  				</br>
+  				There is one branch for LDAP Syntax entries, one for 
+  				LDAP AttributeType entries, and one for ObjectClass entries.
+  				</br>
+  				</br>
+  				The DAS uses these branches, along with the model's 
+  				package namespace, when creating new LDAP metadata entries.
+  				</br>
+  				</br>
+  				Hence the the convention used to define the LDAP namespace
+  				(An OID string) is to append to the globally unique OID for the 
+  				LDAP Metadata Item (TODO - Define Metadata Item as an either an
+  				ObjectClass, AttributeType, Syntax, Control, etc.) the model packages
+  				namespace. appending
+  				the package namespace If a new DataType is being used by a property of the 
+  				a DataObject instance, the DAS will add the DataType's
+  				corresponding Syntax using the DataType's package namespace,
+  				along with the LDAP Server's OID for Syntax entries. to create 
+  				
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe21.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe21.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe21.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe21.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,78 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Creating the LDAP Syntax Entry</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>Creating the LDAP Syntax Entry</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use JNDI</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+  				The <i>name</i> attribute (simple property) of an LDAP
+  				Syntax entry corresponds
+  				to the <i>name</i> member of the SDO DataType class.
+  				</br>
+  				</br>
+  				A syntax entry is defined by three attributes:
+  				- description
+  				- OID
+  				- Name
+  				These must all be unique with respect to
+  				their context siblings within the LDAP server.
+				Creating a globally unqiue OID requires 
+  				a Private Enterprise Number (PEN), which can be
+  				obtained from IANA.  The PEN is then pre fixed to
+  				another integer (or combination of integers separated 
+  				by periods), and the combination of the two 
+  				make a unique identifier for the Syntax.
+  				</br>
+  				</br>
+  				The following example shows how to define a 
+  				syntax entry for "java.lang.String" in ApacheDS:
+  				</br>
+  				</br>
+	            <pre class="codeblock">
+private static final String APACHEDS_LDAP_SCHEMA_OID_SYNTAX_BRANCH = "1.3.6.1.4.1.18060.0.4.X.0";
+private static final String APACHEDS_LDAP_SCHEMA_JAVA_STRING_LOCAL_SYNTAX_OID = "java.lang.String";
+private static final String APACHEDS_LDAP_SCHEMA_JAVA_STRING_GLOBAL_SYNTAX_OID = APACHEDS_LDAP_SCHEMA_SYNTAX_OID_BRANCH +"." + JAVA_STRING_SYNTAX_LOCAL_OID;
+...
+Attributes ldapAttributes = new AttributesImpl();
+Attribute objectClass = new AttributeImpl(
+	SystemSchemaConstants.OBJECT_CLASS_AT, 
+	"top" );
+objectClass.add( MetaSchemaConstants.META_TOP_OC );
+objectClass.add( MetaSchemaConstants.META_SYNTAX_OC );
+ldapAttributes.put( objectClass );
+ldapAttributes.put( MetaSchemaConstants.M_OID_AT, APACHEDS_LDAP_SCHEMA_JAVA_STRING_GLOBAL_SYNTAX_OID );
+ldapAttributes.put( MetaSchemaConstants.M_DESCRIPTION_AT, APACHEDS_LDAP_SCHEMA_JAVA_STRING_LOCAL_SYNTAX_OID );
+
+String EStringSyntaxRDN = "MetaSchemaConstants.M_OID_AT + "=" + APACHEDS_LDAP_SCHEMA_JAVA_STRING_GLOBAL_SYNTAX_OID;
+			    
+//With the current context being "ou=syntaxes,ou=schema"
+ctx.createSubcontext(EStringSyntaxRDN, ldapAttributes);
+	            </pre>
+    	        </br>
+        	    </br>
+    			
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe22.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe22.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe22.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe22.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,70 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Creating an LDAP AttributeType Metadata Entry
+			</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>
+				Creating an LDAP AttributeType Metadata Entry
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use JNDI</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+    			The LDAP AttributeType corresponds to the SDO
+    			DataType.
+    			</br>
+  				</br>
+  				Here's an example of how to create LDAP AttributeType
+  				for the Ecore EString DataType:
+  				</br>
+  				</br>
+	            <pre class="codeblock">
+
+...
+Attributes ldapAttributes = new AttributesImpl();
+Attribute objectClass = new AttributeImpl(
+	SystemSchemaConstants.OBJECT_CLASS_AT, 
+	"top" );
+objectClass.add( MetaSchemaConstants.META_TOP_OC );
+objectClass.add( MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC );
+ldapAttributes.put( objectClass );
+ldapAttributes.put( MetaSchemaConstants.M_NAME_AT, "baseDN");
+ldapAttributes.put( MetaSchemaConstants.M_OID_AT, SOME_GLOBAL_OID );//A trigger in ApacheDS will add this.
+ldapAttributes.put( MetaSchemaConstants.M_DESCRIPTION_AT, "baseDN member of org.tuscany.das.ldap.config.DASConfig" );
+ldapAttributes.put( MetaSchemaConstants.M_EQUALITY_AT, "caseIgnoreMatch" );
+ldapAttributes.put( MetaSchemaConstants.M_SINGLE_VALUE_AT, "FALSE" );
+ldapAttributes.put( MetaSchemaConstants.M_USAGE_AT, "directoryOperation" );
+
+String EStringSyntaxRDN = "MetaSchemaConstants.M_OID_AT + "=" + SOME_GLOBAL_OID;
+			    
+//With the current context being "ou=attributeTypes,ou=schema"
+ctx.createSubcontext(EStringSyntaxRDN, ldapAttributes);
+	            </pre>
+    	        </br>
+        	    </br>
+  				
+    			
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe23.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe23.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe23.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipe23.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,64 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Creating an LDAP ObjectClass Entry</title>
+   	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+	<link href="../../../../src/main/resources/css/book.css" rel="stylesheet" type="text/css">
+	<link href="../../../../src/main/resources/css/recipes.css" rel="stylesheet" type="text/css">
+  </head>
+<body>
+
+<h2>Challenge</h2>
+
+<div class="content">
+	<p>Creating an LDAP ObjectClass Entry</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use JNDI</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+    			The LDAP ObjectClass corresponds 
+    			to an SDO Type or EMF EClass.
+    			</br>
+  				</br>
+  				Here's an example of how to create an LDAP ObjectClass
+  				for the org.tuscany.das.ldap.config.DASConfig EClass:
+  				</br>
+  				</br>
+	            <pre class="codeblock">
+...
+Attributes ldapAttributes = new AttributesImpl();
+Attribute objectClass = new AttributeImpl(
+	SystemSchemaConstants.OBJECT_CLASS_AT, 
+	"top" );
+objectClass.add( MetaSchemaConstants.META_TOP_OC );
+objectClass.add( MetaSchemaConstants.META_ATTRIBUTE_TYPE_OC );
+ldapAttributes.put( objectClass );
+ldapAttributes.put( MetaSchemaConstants.M_NAME_AT, "DASConfig");
+ldapAttributes.put( MetaSchemaConstants.M_DESCRIPTION_AT, "org.tuscany.das.ldap.config.DASConfig");
+ldapAttributes.put( MetaSchemaConstants.M_TYPE_OBJECT_CLASS_AT, "STRUCTURAL" );
+ldapAttributes.put( MetaSchemaConstants.M_MUST_AT, "cn" );
+ldapAttributes.put( MetaSchemaConstants.M_MAY_AT, "ou" );
+
+String EStringSyntaxRDN = "MetaSchemaConstants.M_OID_AT + "=" + SOME_GLOBAL_OID;
+			    
+//With the current context being "ou=attributeTypes,ou=schema"
+ctx.createSubcontext(EStringSyntaxRDN, ldapAttributes);
+	            </pre>
+    	        </br>
+        	    </br>
+  				
+    			
+			</p>
+
+</body>
+</html>
\ No newline at end of file



Mime
View raw message