You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by oe...@apache.org on 2007/04/05 21:38:44 UTC

svn commit: r525948 [2/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...

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipexx.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipexx.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipexx.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/2/recipexx.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,153 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Writing an LDAP ObjectClass per EClass in the 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>
+				Writing an LDAP ObjectClass per EClass in the Model
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>
+				Use the LDAP Server's Dynamic Schema Capabilities
+			</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            
+            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.
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe30.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe30.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe30.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe30.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,56 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Creating an Instance of the DataObject's Classifier
+			</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 Instance of the DataObject's Classifier
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>
+				Use EcoreFactory.eINSTANCE.createEClass()
+			</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            </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>
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe31.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe31.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe31.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe31.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,42 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Creating an Instance of the SDO DataObject's Type
+			</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 Instance of the SDO DataObject's Type
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use EcoreFactory.eINSTANCE</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            </br>
+            </br>
+            <pre class="codeblock">EClass eClass = EcoreFactory.eINSTANCE.createEClass()</pre>
+            </br>
+            </br>
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe32.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe32.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe32.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe32.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,77 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Getting the DataObject's Simple Properties from the LDAP
+				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>
+				Getting the DataObject's Simple Properties from the LDAP
+				Entry
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use DirContext.getAttributes()</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            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>
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe33.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe33.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe33.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe33.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,71 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Getting the DataObject's Complex Properties's 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>
+				Getting the DataObject's Complex Properties's Metadata
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use DirContext.getAttributes()</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            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>
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe34.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe34.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe34.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/3/recipe34.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,65 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Adding the Root EClass's EAttributes</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 the Root EClass's EAttributes</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>
+				Use the Simple Properties Attributes Map
+			</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            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>
+            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe13.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe13.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe13.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe13.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,93 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Creating an EReference Subcontext</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 EReference Subcontext</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>
+				Use the JNDI InitialContext bind Operation
+			</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            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/>
+
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe40.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe40.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe40.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/4/recipe40.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,186 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Writing a DataGraph to ADS</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>Writing a DataGraph to ADS</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>
+				Use DAS.LDAP.write(eObject) [Just made it up]
+			</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+            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>
+            
+			</p>
+
+
+<h2>Related Challenges</h2>
+
+<table>
+	<tbody>
+		<tr>
+			<td>
+    			<a
+    				href="../1/recipe11.html">
+    				<img
+    					border="0" 
+    					title="
+				Providing the DAS With an Initial Context
+			"
+    					alt="
+				Providing the DAS With an Initial Context
+			"
+    					src="../../../../src/main/resources/images/123.png">
+    			</a>
+			</td>
+			<td>
+				Providing the DAS With an Initial Context
+			</td>
+		</tr>
+	</tbody>
+</table>
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe50.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe50.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe50.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe50.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,52 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Creating a DataObject Instance</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 a DataObject Instance</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>Use the RDN from the current directory context</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+				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.
+	            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe51.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe51.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe51.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe51.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,33 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Setting a DataObject's Simple Properties</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>Setting a DataObject's Simple Properties</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p></p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+	            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe52.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe52.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe52.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/5/recipe52.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,33 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title> Setting the DataObject's Complex Properties</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> Setting the DataObject's Complex Properties</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p></p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>
+				
+	            
+			</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex0.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex0.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex0.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex0.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,32 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>Creating the Prototype Project</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 Prototype Project</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>
+				Run mvn archetype:create -DartifactId=das.ldap.prototype -DgroupId=org.apache.tuscany
+			</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p>null</p>
+
+</body>
+</html>
\ No newline at end of file

Added: directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex1.html
URL: http://svn.apache.org/viewvc/directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex1.html?view=auto&rev=525948
==============================================================================
--- directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex1.html (added)
+++ directory/sandbox/oersoy/guides/das.ldap.design.documentation/target/html/recipes/x/recipex1.html Thu Apr  5 12:38:41 2007
@@ -0,0 +1,34 @@
+ 
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+  <head>
+  <title>
+				Adding the EMF Dependencies to the Build
+			</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 the EMF Dependencies to the Build
+			</p>
+</div>
+
+<h2>Solution</h2>
+
+<div class="content">
+	<p>See Discussion</p>
+</div>
+
+<h2>Discussion</h2>
+
+<div class="content">
+<p></p>
+
+</body>
+</html>
\ No newline at end of file