From 02805157fa504b3dbf701a62280ca9aaf82183b5 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 05 Sep 2007 20:12:11 +0000
Subject: [PATCH] Partial fix for issue 1449: administration framework aggregation support

---
 opends/resource/admin/admin.xsd |   95 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 81 insertions(+), 14 deletions(-)

diff --git a/opends/resource/admin/admin.xsd b/opends/resource/admin/admin.xsd
index b84659b..6dbbb93 100644
--- a/opends/resource/admin/admin.xsd
+++ b/opends/resource/admin/admin.xsd
@@ -61,9 +61,9 @@
         type="tns:description-type">
         <xsd:annotation>
           <xsd:documentation>
-            The user friendly plural name of this managed object. This element
-            is optional and by default the user friendly plural name is derived
-            from the definition's plural-name attribute.
+            The user friendly plural name of this managed object. This
+            element is optional and by default the user friendly plural
+            name is derived from the definition's plural-name attribute.
           </xsd:documentation>
         </xsd:annotation>
       </xsd:element>
@@ -678,17 +678,6 @@
         </xsd:documentation>
       </xsd:annotation>
     </xsd:attribute>
-    <xsd:attribute name="aggregation" type="tns:path-type"
-      use="optional">
-      <xsd:annotation>
-        <xsd:documentation>
-          For aggregation relations, the path locating the relation
-          beneath which the referenced (aggregated) managed objects can
-          be found. If this attribute is not specified, the relation is
-          a composition by default.
-        </xsd:documentation>
-      </xsd:annotation>
-    </xsd:attribute>
     <xsd:attribute name="managed-object-name" type="tns:name-type"
       use="optional">
       <xsd:annotation>
@@ -1032,6 +1021,84 @@
       </xsd:documentation>
     </xsd:annotation>
     <xsd:choice>
+      <xsd:element name="aggregation">
+        <xsd:annotation>
+          <xsd:documentation>
+            An aggregation property names one or more managed objects
+            which are required by the managed object associated with
+            this property. An aggregation property definition takes care
+            to perform referential integrity checks: referenced managed
+            objects cannot be deleted. Nor can an aggregation reference
+            non-existent managed objects. Referential integrity checks
+            are not performed during value validation. Instead they are
+            performed when changes to the managed object are committed.
+          </xsd:documentation>
+        </xsd:annotation>
+        <xsd:complexType>
+          <xsd:attribute name="parent-path" type="tns:path-type"
+            use="required">
+            <xsd:annotation>
+              <xsd:documentation>
+                The name of the managed object which is the parent of
+                the aggregated managed objects.
+              </xsd:documentation>
+            </xsd:annotation>
+          </xsd:attribute>
+          <xsd:attribute name="relation-name" type="tns:name-type"
+            use="required">
+            <xsd:annotation>
+              <xsd:documentation>
+                The relation in the parent managed object which contains
+                the aggregated managed objects.
+              </xsd:documentation>
+            </xsd:annotation>
+          </xsd:attribute>
+          <xsd:attribute name="managed-object-name" type="tns:name-type"
+            use="optional">
+            <xsd:annotation>
+              <xsd:documentation>
+                The type of managed object referenced by this
+                aggregation if different from this relation's name.
+              </xsd:documentation>
+            </xsd:annotation>
+          </xsd:attribute>
+          <xsd:attribute name="managed-object-package"
+            type="tns:package-type" use="optional">
+            <xsd:annotation>
+              <xsd:documentation>
+                The package containing the referenced managed object
+                definition if it is not the same as this managed
+                object's package.
+              </xsd:documentation>
+            </xsd:annotation>
+          </xsd:attribute>
+          <xsd:attribute name="source-enabled-property-name"
+            type="tns:name-type" use="optional">
+            <xsd:annotation>
+              <xsd:documentation>
+                The optional boolean "enabled" property in the
+                aggregating managed object. When this property is true,
+                the "target-enabled-property-name" in the aggregated
+                managed objects must also be true. The
+                "target-enabled-property-name" attribute must be
+                specified when this attribute is defined.
+              </xsd:documentation>
+            </xsd:annotation>
+          </xsd:attribute>
+          <xsd:attribute name="target-enabled-property-name"
+            type="tns:name-type" use="optional">
+            <xsd:annotation>
+              <xsd:documentation>
+                The optional boolean "enabled" property in the
+                aggregated managed objects. This property must not be
+                false while the aggregated managed object is referenced.
+                This attribute must be defined when the
+                "source-enabled-property-name" attribute is specified.
+              </xsd:documentation>
+            </xsd:annotation>
+          </xsd:attribute>
+        </xsd:complexType>
+      </xsd:element>
       <xsd:element name="attribute-type">
         <xsd:annotation>
           <xsd:documentation>

--
Gitblit v1.10.0