From c070f32107c631e8e5b4dd29d62dc3248738a4c2 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Sun, 02 Sep 2007 14:13:03 +0000
Subject: [PATCH] Fix bug in code generation which was preventing overriding the default behavior for enumerated properties.
---
opendj-sdk/opends/resource/admin/admin-preprocessor.xsd | 26 +++++++++----
opendj-sdk/opends/resource/admin/metaMO.xsl | 18 +++++----
opendj-sdk/opends/resource/admin/preprocessor.xsl | 33 +++++++++++-----
opendj-sdk/opends/resource/admin/property-types/enumeration.xsl | 31 ++++++++++++---
4 files changed, 76 insertions(+), 32 deletions(-)
diff --git a/opendj-sdk/opends/resource/admin/admin-preprocessor.xsd b/opendj-sdk/opends/resource/admin/admin-preprocessor.xsd
index 0714a1e..1049f00 100644
--- a/opendj-sdk/opends/resource/admin/admin-preprocessor.xsd
+++ b/opendj-sdk/opends/resource/admin/admin-preprocessor.xsd
@@ -34,11 +34,11 @@
"package" element is appended identifying the referenced package.
</xsd:documentation>
</xsd:annotation>
- <xsd:element name="managed-object">
+ <xsd:element name="last-defined-in">
<xsd:annotation>
<xsd:documentation>
- Specifies the name and package of the managed object definition
- which defines a property definition.
+ Specifies the name and package of the last managed object
+ definition which defined or overrides this property definition.
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
@@ -60,16 +60,26 @@
</xsd:attribute>
</xsd:complexType>
</xsd:element>
- <xsd:element name="package">
+ <xsd:element name="first-defined-in">
<xsd:annotation>
<xsd:documentation>
- This optional element specifies, for referenced property
- definitions (i.e. those defined in a Package.xml file), the name
- of the package defining the definition.
+ This optional element specifies the location where the property
+ was first defined. This may be in a referenced Package.xml
+ definition, or in an overridden parent definition. This element
+ is only present when the package/name attributes would differ
+ from those specified in the last-defined-in element.
</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
- <xsd:attribute name="name" type="admin:package-type"
+ <xsd:attribute name="name" type="admin:name-type"
+ use="optional">
+ <xsd:annotation>
+ <xsd:documentation>
+ The name of the managed object if applicable.
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="package" type="admin:package-type"
use="required">
<xsd:annotation>
<xsd:documentation>
diff --git a/opendj-sdk/opends/resource/admin/metaMO.xsl b/opendj-sdk/opends/resource/admin/metaMO.xsl
index 3deb2c9..9cbcf5b 100644
--- a/opendj-sdk/opends/resource/admin/metaMO.xsl
+++ b/opendj-sdk/opends/resource/admin/metaMO.xsl
@@ -84,12 +84,14 @@
Generate enumerations defined by this managed object..
-->
<xsl:for-each
- select="$this-local-properties[adm:syntax/adm:enumeration]">
+ select="$this-local-properties[adm:syntax/adm:enumeration and not(adm:profile[@name='preprocessor']/adm:first-defined-in)]">
<xsl:sort select="@name" />
- <xsl:text>
</xsl:text>
- <xsl:text>
</xsl:text>
- <xsl:text>
</xsl:text>
- <xsl:call-template name="generate-enumeration" />
+ <xsl:if test="not(adm:profile[@name='preprocessor']/admpp:first-defined-in)">
+ <xsl:text>
</xsl:text>
+ <xsl:text>
</xsl:text>
+ <xsl:text>
</xsl:text>
+ <xsl:call-template name="generate-enumeration" />
+ </xsl:if>
</xsl:for-each>
<!--
Define application tags if this is the root configuration.
@@ -222,7 +224,7 @@
'", null);
')" />
</xsl:otherwise>
</xsl:choose>
- <xsl:value-of select="concat(' }
')" />
+ <xsl:value-of select="' }
'" />
<!--
Create configuration view factory methods for non-abstract definitions
-->
@@ -897,7 +899,7 @@
</xsl:if>
<xsl:choose>
<xsl:when
- test="adm:profile[@name='preprocessor']/admpp:managed-object[@name=$this-name and @package=$this-package]">
+ test="adm:profile[@name='preprocessor']/admpp:last-defined-in[@name=$this-name and @package=$this-package]">
<xsl:value-of
select="concat(' *
',
' * @return Returns the "',
@@ -993,7 +995,7 @@
</xsl:variable>
<xsl:choose>
<xsl:when
- test="adm:profile[@name='preprocessor']/admpp:managed-object[@name=$this-name and @package=$this-package]">
+ test="adm:profile[@name='preprocessor']/admpp:last-defined-in[@name=$this-name and @package=$this-package]">
<xsl:value-of
select="concat($java-managed-object-name, 'CfgClient,',
$java-managed-object-name, 'Cfg> get',
diff --git a/opendj-sdk/opends/resource/admin/preprocessor.xsl b/opendj-sdk/opends/resource/admin/preprocessor.xsl
index c527e89..c0ae6f5 100644
--- a/opendj-sdk/opends/resource/admin/preprocessor.xsl
+++ b/opendj-sdk/opends/resource/admin/preprocessor.xsl
@@ -378,7 +378,7 @@
<xsl:attribute name="name">
<xsl:value-of select="'preprocessor'" />
</xsl:attribute>
- <xsl:element name="admpp:managed-object">
+ <xsl:element name="admpp:last-defined-in">
<xsl:attribute name="name">
<xsl:value-of select="$moname" />
</xsl:attribute>
@@ -529,7 +529,7 @@
<xsl:attribute name="name">
<xsl:value-of select="'preprocessor'" />
</xsl:attribute>
- <xsl:element name="admpp:managed-object">
+ <xsl:element name="admpp:last-defined-in">
<xsl:attribute name="name">
<xsl:value-of select="$moname" />
</xsl:attribute>
@@ -537,8 +537,8 @@
<xsl:value-of select="$mopackage" />
</xsl:attribute>
</xsl:element>
- <xsl:element name="admpp:package">
- <xsl:attribute name="name">
+ <xsl:element name="admpp:first-defined-in">
+ <xsl:attribute name="package">
<xsl:value-of select="$package" />
</xsl:attribute>
</xsl:element>
@@ -641,7 +641,7 @@
<xsl:attribute name="name">
<xsl:value-of select="'preprocessor'" />
</xsl:attribute>
- <xsl:element name="admpp:managed-object">
+ <xsl:element name="admpp:last-defined-in">
<xsl:attribute name="name">
<xsl:value-of select="$moname" />
</xsl:attribute>
@@ -649,6 +649,19 @@
<xsl:value-of select="$mopackage" />
</xsl:attribute>
</xsl:element>
+ <xsl:choose>
+ <xsl:when
+ test="$property/adm:profile[@name='preprocessor']/admpp:first-defined-in">
+ <xsl:copy-of
+ select="$property/adm:profile[@name='preprocessor']/admpp:first-defined-in" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:element name="admpp:first-defined-in">
+ <xsl:copy-of
+ select="$property/adm:profile[@name='preprocessor']/admpp:last-defined-in/@*" />
+ </xsl:element>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:element>
</xsl:element>
</xsl:template>
@@ -799,7 +812,7 @@
<xsl:attribute name="name">
<xsl:value-of select="'preprocessor'" />
</xsl:attribute>
- <xsl:element name="admpp:managed-object">
+ <xsl:element name="admpp:last-defined-in">
<xsl:attribute name="name">
<xsl:value-of select="$moname" />
</xsl:attribute>
@@ -1170,17 +1183,17 @@
Useful variables relating to managed object's relations.
-->
<xsl:variable name="this-local-relations"
- select="$this/adm:relation[adm:profile[@name='preprocessor']/admpp:managed-object[@name=$this-name and @package=$this-package]]" />
+ select="$this/adm:relation[adm:profile[@name='preprocessor']/admpp:last-defined-in[@name=$this-name and @package=$this-package]]" />
<xsl:variable name="this-inherited-relations"
- select="$this/adm:relation[adm:profile[@name='preprocessor']/admpp:managed-object[not(@name=$this-name and @package=$this-package)]]" />
+ select="$this/adm:relation[adm:profile[@name='preprocessor']/admpp:last-defined-in[not(@name=$this-name and @package=$this-package)]]" />
<xsl:variable name="this-all-relations" select="$this/adm:relation" />
<!--
Useful variables relating to managed object's properties.
-->
<xsl:variable name="this-local-properties"
- select="$this/adm:property[adm:profile[@name='preprocessor']/admpp:managed-object[@name=$this-name and @package=$this-package]]" />
+ select="$this/adm:property[adm:profile[@name='preprocessor']/admpp:last-defined-in[@name=$this-name and @package=$this-package]]" />
<xsl:variable name="this-inherited-properties"
- select="$this/adm:property[adm:profile[@name='preprocessor']/admpp:managed-object[not(@name=$this-name and @package=$this-package)]]" />
+ select="$this/adm:property[adm:profile[@name='preprocessor']/admpp:last-defined-in[not(@name=$this-name and @package=$this-package)]]" />
<xsl:variable name="this-all-properties" select="$this/adm:property" />
<!--
Default rule for testing.
diff --git a/opendj-sdk/opends/resource/admin/property-types/enumeration.xsl b/opendj-sdk/opends/resource/admin/property-types/enumeration.xsl
index fa18fab..ce12986 100644
--- a/opendj-sdk/opends/resource/admin/property-types/enumeration.xsl
+++ b/opendj-sdk/opends/resource/admin/property-types/enumeration.xsl
@@ -35,15 +35,25 @@
select="../../adm:profile[@name='preprocessor']" />
<xsl:element name="import">
<xsl:choose>
- <xsl:when test="$pp/admpp:package">
- <xsl:value-of select="concat($pp/admpp:package/@name, '.')" />
+ <xsl:when test="$pp/admpp:first-defined-in">
+ <xsl:value-of
+ select="concat($pp/admpp:first-defined-in/@package, '.')" />
+ <xsl:if test="$pp/admpp:first-defined-in/@name">
+ <xsl:value-of select="'meta.'" />
+ <xsl:call-template name="name-to-java">
+ <xsl:with-param name="value"
+ select="$pp/admpp:first-defined-in/@name" />
+ </xsl:call-template>
+ <xsl:value-of select="'CfgDefn.'" />
+ </xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:value-of
- select="concat($pp/admpp:managed-object/@package, '.meta.')" />
+ select="concat($pp/admpp:last-defined-in/@package, '.')" />
+ <xsl:value-of select="'meta.'" />
<xsl:call-template name="name-to-java">
<xsl:with-param name="value"
- select="$pp/admpp:managed-object/@name" />
+ select="$pp/admpp:last-defined-in/@name" />
</xsl:call-template>
<xsl:value-of select="'CfgDefn.'" />
</xsl:otherwise>
@@ -59,9 +69,18 @@
</xsl:element>
<xsl:variable name="pp"
select="../../adm:profile[@name='preprocessor']" />
- <xsl:if test="$pp/admpp:package">
+ <xsl:if test="$pp/admpp:first-defined-in">
<xsl:element name="import">
- <xsl:value-of select="concat($pp/admpp:package/@name, '.')" />
+ <xsl:value-of
+ select="concat($pp/admpp:first-defined-in/@package, '.')" />
+ <xsl:if test="$pp/admpp:first-defined-in/@name">
+ <xsl:value-of select="'meta.'" />
+ <xsl:call-template name="name-to-java">
+ <xsl:with-param name="value"
+ select="$pp/admpp:first-defined-in/@name" />
+ </xsl:call-template>
+ <xsl:value-of select="'CfgDefn.'" />
+ </xsl:if>
<xsl:apply-templates select="." mode="java-value-type" />
</xsl:element>
</xsl:if>
--
Gitblit v1.10.0