From 836e359af22b0362453e9fabcb3f8a47e2780e8e Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Tue, 22 May 2007 14:35:47 +0000
Subject: [PATCH] Various improvements and refactorings of the admin framework client API, including:
---
opends/resource/admin/java-utilities.xsl | 148 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 145 insertions(+), 3 deletions(-)
diff --git a/opends/resource/admin/java-utilities.xsl b/opends/resource/admin/java-utilities.xsl
index 370b30d..8a61b62 100644
--- a/opends/resource/admin/java-utilities.xsl
+++ b/opends/resource/admin/java-utilities.xsl
@@ -143,6 +143,145 @@
</xsl:call-template>
</xsl:template>
<!--
+ Add a Java comment at the specified indentation.
+
+ This template handles embedded newline characters
+ and will also indent individual lines according to
+ the number of leading spaces they contain.
+
+ @param indent
+ The indentation column for the comment.
+
+ @param content
+ The content to be output in the comment.
+ -->
+ <xsl:template name="add-java-comment2">
+ <xsl:param name="indent" select="/.." />
+ <xsl:param name="content" select="/.." />
+ <!-- Compute the indentation string. -->
+ <xsl:variable name="indent-text">
+ <xsl:call-template name="add-indent">
+ <xsl:with-param name="indent" select="$indent + 1" />
+ </xsl:call-template>
+ <xsl:value-of select="'*'" />
+ </xsl:variable>
+ <!-- Output the comment header. -->
+ <xsl:call-template name="add-indent">
+ <xsl:with-param name="indent" select="$indent" />
+ </xsl:call-template>
+ <xsl:value-of select="'/**
'" />
+ <!-- Output the comment contents. -->
+ <xsl:call-template name="add-java-comment-line">
+ <xsl:with-param name="indent-text" select="$indent-text" />
+ <xsl:with-param name="content" select="$content" />
+ </xsl:call-template>
+ <!-- Output the header trailer. -->
+ <xsl:value-of select="concat($indent-text, '/
')" />
+ </xsl:template>
+ <!-- Creates a padding string of the required length. -->
+ <xsl:template name="add-indent">
+ <xsl:param name="indent" select="/.." />
+ <xsl:if test="$indent > 0">
+ <xsl:value-of select="' '" />
+ <xsl:call-template name="add-indent">
+ <xsl:with-param name="indent" select="$indent - 1" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+ <xsl:template name="add-java-comment-line">
+ <xsl:param name="indent-text" select="/.." />
+ <xsl:param name="content" select="/.." />
+ <!-- Get the next line. -->
+ <xsl:variable name="head"
+ select="substring-before($content, '
')" />
+ <xsl:variable name="tail"
+ select="substring-after($content, '
')" />
+ <!--
+ Case #1 - content is empty
+ Case #2 - no newline
+ Case #3 - contains a new line
+ Case #3.1 - begins with newline
+ Case #3.2 - ends with newline
+ -->
+ <xsl:choose>
+ <xsl:when test="string-length($content) = 0">
+ <!-- Do nothing. -->
+ </xsl:when>
+ <xsl:when test="not(contains($content, '
'))">
+ <!-- Single line of text. -->
+ <xsl:call-template name="java-format-line">
+ <xsl:with-param name="indent-text" select="$indent-text" />
+ <xsl:with-param name="line" select="$content" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- Output the first line and repeat for remaining lines. -->
+ <xsl:call-template name="java-format-line">
+ <xsl:with-param name="indent-text" select="$indent-text" />
+ <xsl:with-param name="line" select="$head" />
+ </xsl:call-template>
+ <xsl:call-template name="add-java-comment-line">
+ <xsl:with-param name="indent-text" select="$indent-text" />
+ <xsl:with-param name="content" select="$tail" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <!-- Formats a line of comment text. -->
+ <xsl:template name="java-format-line">
+ <xsl:param name="indent-text" select="/.." />
+ <xsl:param name="line" select="/.." />
+ <!-- First count the number of leading spaces to determine the indent. -->
+ <xsl:variable name="leading-spaces">
+ <xsl:call-template name="java-format-line-help">
+ <xsl:with-param name="line" select="$line" />
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:variable name="content"
+ select="substring($line, $leading-spaces + 1)" />
+ <xsl:variable name="padding1">
+ <xsl:value-of select="$indent-text" />
+ <xsl:call-template name="add-indent">
+ <xsl:with-param name="indent" select="$leading-spaces" />
+ </xsl:call-template>
+ </xsl:variable>
+ <!-- We need to use indent2 for certain javadoc keywords. -->
+ <xsl:variable name="padding2">
+ <xsl:choose>
+ <xsl:when test="starts-with($content, '@return')">
+ <xsl:value-of select="concat($padding1, ' ')" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$padding1" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <!-- Now output the line, wrapping as necessary. -->
+ <xsl:call-template name="format-text">
+ <xsl:with-param name="indent-text" select="$padding1" />
+ <xsl:with-param name="indent-text2" select="$padding2" />
+ <xsl:with-param name="wrap-column" select="'70'" />
+ <xsl:with-param name="content" select="$content" />
+ </xsl:call-template>
+ </xsl:template>
+ <!-- Determines the number of leading spaces in the provided string. -->
+ <xsl:template name="java-format-line-help">
+ <xsl:param name="line" select="/.." />
+ <xsl:param name="count" select="0" />
+ <xsl:choose>
+ <xsl:when test="starts-with($line, ' ')">
+ <xsl:call-template name="java-format-line-help">
+ <xsl:with-param name="line"
+ select="substring-after($line, ' ')" />
+ <xsl:with-param name="count" select="$count + 1" />
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$count" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+ <!--
Utility template for removing duplicate values from a node-set.
This template is based on the version published on the XSLT site.
@@ -168,13 +307,16 @@
<xsl:when test="$distinct[. = $value]">
<xsl:call-template name="_set-distinct">
<xsl:with-param name="distinct" select="$distinct" />
- <xsl:with-param name="nodes" select="$nodes[position() > 1]" />
+ <xsl:with-param name="nodes"
+ select="$nodes[position() > 1]" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="_set-distinct">
- <xsl:with-param name="distinct" select="$distinct | $nodes[1]" />
- <xsl:with-param name="nodes" select="$nodes[position() > 1]" />
+ <xsl:with-param name="distinct"
+ select="$distinct | $nodes[1]" />
+ <xsl:with-param name="nodes"
+ select="$nodes[position() > 1]" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
--
Gitblit v1.10.0