<!--
|
! CDDL HEADER START
|
!
|
! The contents of this file are subject to the terms of the
|
! Common Development and Distribution License, Version 1.0 only
|
! (the "License"). You may not use this file except in compliance
|
! with the License.
|
!
|
! You can obtain a copy of the license at
|
! trunk/opends/resource/legal-notices/OpenDS.LICENSE
|
! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
|
! See the License for the specific language governing permissions
|
! and limitations under the License.
|
!
|
! When distributing Covered Code, include this CDDL HEADER in each
|
! file and include the License file at
|
! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
|
! add the following below this CDDL HEADER, with the fields enclosed
|
! by brackets "[]" replaced with your own identifying information:
|
! Portions Copyright [yyyy] [name of copyright owner]
|
!
|
! CDDL HEADER END
|
!
|
!
|
! Portions Copyright 2007 Sun Microsystems, Inc.
|
! -->
|
<xsl:stylesheet version="1.0" xmlns:adm="http://www.opends.org/admin"
|
xmlns:admpp="http://www.opends.org/admin-preprocessor"
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
<xsl:import href="java-utilities.xsl" />
|
<xsl:import href="preprocessor.xsl" />
|
<xsl:import href="property-types.xsl" />
|
<xsl:output method="text" encoding="us-ascii" />
|
<!--
|
Template for generating the interface declaration.
|
-->
|
<xsl:template name="generate-interface-declaration">
|
<xsl:value-of select="'/**
'" />
|
<xsl:call-template name="add-java-comment">
|
<xsl:with-param name="indent-text" select="' *'" />
|
<xsl:with-param name="content"
|
select="concat('A client-side interface for reading and modifying ',
|
$this-ufn, ' settings.')" />
|
</xsl:call-template>
|
<xsl:value-of select="' * <p>
'" />
|
<xsl:call-template name="add-java-comment">
|
<xsl:with-param name="indent-text" select="' *'" />
|
<xsl:with-param name="content" select="$this/adm:synopsis" />
|
</xsl:call-template>
|
<xsl:value-of select="' */
'" />
|
<xsl:value-of
|
select="concat('public interface ',
|
$this-java-class,
|
'CfgClient extends ')" />
|
<xsl:choose>
|
<xsl:when test="boolean($this/@extends)">
|
<xsl:value-of select="concat($parent-java-class,'CfgClient ')" />
|
</xsl:when>
|
<xsl:otherwise>
|
<xsl:value-of select="'ConfigurationClient '" />
|
</xsl:otherwise>
|
</xsl:choose>
|
<xsl:text>{
</xsl:text>
|
</xsl:template>
|
<!--
|
Template for generating the configuration definition getter.
|
-->
|
<xsl:template name="generate-configuration-definition-getter">
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Get the configuration definition associated with this ', $this-ufn, '.
',
|
' *
',
|
' * @return Returns the configuration definition associated with this ', $this-ufn, '.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' ManagedObjectDefinition<? extends ', $this-java-class,'CfgClient, ? extends ', $this-java-class,'Cfg> definition();
')" />
|
</xsl:template>
|
<!--
|
Template for generating the relation getter declarations.
|
-->
|
<xsl:template name="generate-relation-declarations">
|
<xsl:variable name="name" select="@name" />
|
<xsl:variable name="ufn">
|
<xsl:call-template name="name-to-ufn">
|
<xsl:with-param name="value" select="$name" />
|
</xsl:call-template>
|
</xsl:variable>
|
<xsl:variable name="java-relation-name">
|
<xsl:call-template name="name-to-java">
|
<xsl:with-param name="value" select="$name" />
|
</xsl:call-template>
|
</xsl:variable>
|
<xsl:variable name="java-class-name">
|
<xsl:call-template name="name-to-java">
|
<xsl:with-param name="value" select="@managed-object-name" />
|
</xsl:call-template>
|
</xsl:variable>
|
<xsl:choose>
|
<xsl:when test="adm:one-to-one">
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Gets the ', $ufn,'.
',
|
' *
',
|
' * @return Returns the ', $ufn,'.
',
|
' * @throws OperationsException
',
|
' * If the ', $ufn,' could not be read due to some
',
|
' * underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' ', $java-class-name, 'CfgClient get',
|
$java-relation-name, '() throws OperationsException;
')" />
|
</xsl:when>
|
<xsl:when test="adm:one-to-zero-or-one">
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Determines whether or not the ', $ufn,' exists.
',
|
' *
',
|
' * @return Returns <true> if the ', $ufn,' exists.
',
|
' * @throws OperationsException
',
|
' * If the determination could not be made
',
|
' * due to some underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' boolean has',
|
$java-relation-name, '() throws OperationsException;
')" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Gets the ', $ufn,' if it is present.
',
|
' *
',
|
' * @return Returns the ', $ufn,' if it is present.
',
|
' * @throws OperationsException
',
|
' * If the ', $ufn,' does not exist or could not be read
',
|
' * due to some underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' ', $java-class-name, 'CfgClient get',
|
$java-relation-name, '() throws OperationsException;
')" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Creates the ', $ufn,' if it does not exist yet.
',
|
' *
',
|
' * @param <C>
',
|
' * The type of the ', $ufn,' being added.
',
|
' * @param d
',
|
' * The definition of the ', $ufn,' to be created.
',
|
' * @param p
',
|
' * A property provider which can be used to initialize
',
|
' * the property values of the new ', $ufn,'.
',
|
' * @return Returns the ', $ufn,' instance representing the
',
|
' * ', $ufn,' that was created.
',
|
' * @throws OperationsException
',
|
' * If the ', $ufn,' already exists or could not be created
',
|
' * due to some underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' <C extends ', $java-class-name,'CfgClient> C create', $java-relation-name, '(
',
|
' ManagedObjectDefinition<C, ?> d, PropertyProvider p) throws OperationsException;
')" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Removes the ', $ufn,' if it exists.
',
|
' *
',
|
' * @throws OperationsException
',
|
' * If the ', $ufn,' does not exist or could not be removed
',
|
' * due to some underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' void remove',
|
$java-relation-name, '() throws OperationsException;
')" />
|
</xsl:when>
|
<xsl:when test="adm:one-to-many">
|
<xsl:variable name="plural-name"
|
select="adm:one-to-many/@plural-name" />
|
<xsl:variable name="ufpn">
|
<xsl:call-template name="name-to-ufn">
|
<xsl:with-param name="value" select="$plural-name" />
|
</xsl:call-template>
|
</xsl:variable>
|
<xsl:variable name="java-relation-plural-name">
|
<xsl:call-template name="name-to-java">
|
<xsl:with-param name="value" select="$plural-name" />
|
</xsl:call-template>
|
</xsl:variable>
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Lists the ', $ufpn,'.
',
|
' *
',
|
' * @return Returns an array containing the names of the
',
|
' * ', $ufpn,'.
',
|
' * @throws OperationsException
',
|
' * If the ', $ufpn,' could not be listed due to some
',
|
' * underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' String[] list',
|
$java-relation-plural-name, '() throws OperationsException;
')" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Gets the named ', $ufn,'.
',
|
' *
',
|
' * @param name
',
|
' * The name of the ', $ufn,' to retrieve.
',
|
' * @return Returns the named ', $ufn,'.
',
|
' * @throws OperationsException
',
|
' * If the ', $ufn,' does not exist or could not be read
',
|
' * due to some underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' ', $java-class-name, 'CfgClient get',
|
$java-relation-name, '(String name) throws OperationsException;
')" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Creates a new ', $ufn,'.
',
|
' *
',
|
' * @param <C>
',
|
' * The type of the ', $ufn,' being added.
',
|
' * @param d
',
|
' * The definition of the ', $ufn,' to be created.
',
|
' * @param name
',
|
' * The name of the new ', $ufn,'.
',
|
' * @param p
',
|
' * A property provider which can be used to initialize
',
|
' * the property values of the new ', $ufn,'.
',
|
' * @return Returns a new ', $ufn,' instance representing the
',
|
' * ', $ufn,' that was created.
',
|
' * @throws OperationsException
',
|
' * If the ', $ufn,' already exists or could not be created
',
|
' * due to some underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' <C extends ', $java-class-name,'CfgClient> C create', $java-relation-name, '(
',
|
' ManagedObjectDefinition<C, ?> d, String name, PropertyProvider p) throws OperationsException;
')" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:value-of
|
select="concat(' /**
',
|
' * Removes the named ', $ufn,'.
',
|
' *
',
|
' * @param name
',
|
' * The name of the ', $ufn,' to remove.
',
|
' * @throws OperationsException
',
|
' * If the ', $ufn,' does not exist or could not be removed
',
|
' * due to some underlying communication problem.
',
|
' */
')" />
|
<xsl:value-of
|
select="concat(' void remove',
|
$java-relation-name, '(String name) throws OperationsException;
')" />
|
</xsl:when>
|
<xsl:otherwise>
|
<xsl:message terminate="yes">
|
<xsl:value-of
|
select="concat('Unknown relation type "', local-name(*), '" in relation "', $name, '".')" />
|
</xsl:message>
|
</xsl:otherwise>
|
</xsl:choose>
|
</xsl:template>
|
<!--
|
Main document parsing template.
|
-->
|
<xsl:template match="/">
|
<xsl:call-template name="copyright-notice" />
|
<xsl:value-of
|
select="concat('package ', $this-package, '.client;
')" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:call-template name="generate-import-statements">
|
<xsl:with-param name="imports">
|
<xsl:for-each select="$this-local-properties">
|
<xsl:call-template name="get-property-java-imports" />
|
</xsl:for-each>
|
<xsl:if test="$this-local-properties[@multi-valued='true']">
|
<import>java.util.Collection</import>
|
<import>java.util.SortedSet</import>
|
</xsl:if>
|
<xsl:if test="$this-local-properties[not(@read-only='true')]">
|
<import>
|
org.opends.server.admin.IllegalPropertyValueException
|
</import>
|
</xsl:if>
|
<xsl:if test="$this-local-relations">
|
<import>org.opends.server.admin.OperationsException</import>
|
</xsl:if>
|
<xsl:if
|
test="$this-local-relations/adm:one-to-zero-or-one|$this-local-relations/adm:one-to-many">
|
<import>org.opends.server.admin.PropertyProvider</import>
|
</xsl:if>
|
<xsl:choose>
|
<xsl:when test="$this/@extends">
|
<xsl:if test="$parent-package != $this-package">
|
<xsl:element name="import">
|
<xsl:value-of
|
select="concat($parent-package, '.client.', $parent-java-class, 'CfgClient')" />
|
</xsl:element>
|
</xsl:if>
|
</xsl:when>
|
<xsl:otherwise>
|
<import>org.opends.server.admin.ConfigurationClient</import>
|
</xsl:otherwise>
|
</xsl:choose>
|
<xsl:element name="import">
|
<xsl:value-of
|
select="concat($this-package, '.server.', $this-java-class, 'Cfg')" />
|
</xsl:element>
|
<import>org.opends.server.admin.ManagedObjectDefinition</import>
|
</xsl:with-param>
|
</xsl:call-template>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:call-template name="generate-interface-declaration" />
|
<xsl:text>
</xsl:text>
|
<xsl:call-template name="generate-configuration-definition-getter" />
|
<xsl:for-each select="$this-local-properties">
|
<xsl:sort select="@name" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:call-template name="generate-property-getter-declaration">
|
<xsl:with-param name="interface" select="'client'" />
|
</xsl:call-template>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:call-template name="generate-property-setter-declaration" />
|
</xsl:for-each>
|
<xsl:for-each select="$this-local-relations">
|
<xsl:sort select="@name" />
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:text>
</xsl:text>
|
<xsl:call-template name="generate-relation-declarations" />
|
</xsl:for-each>
|
<xsl:text>
</xsl:text>
|
<xsl:text>}
</xsl:text>
|
</xsl:template>
|
</xsl:stylesheet>
|