mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Jean-Noel Rouvignac
13.53.2013 2d2991e5746eacef47f32cfec5092597da247007
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<!--
  ! 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 legal-notices/CDDLv1_0.txt
  ! or http://forgerock.org/license/CDDLv1.0.html.
  ! 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 legal-notices/CDDLv1_0.txt.
  ! 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
  !
  !
  !      Copyright 2008 Sun Microsystems, Inc.
  ! -->
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:adm="http://www.opends.org/admin"
  xmlns:ldap="http://www.opends.org/admin-ldap">
  <xsl:import href="java-utilities.xsl" />
  <xsl:import href="preprocessor.xsl" />
  <xsl:import href="property-types.xsl" />
  <xsl:output method="text" encoding="us-ascii" />
  <!--
    Document parsing.
  -->
  <xsl:template match="/">
    <xsl:if
      test="not($this/adm:profile[@name='ldap']/ldap:object-class/ldap:name) and not($this-is-root)">
      <xsl:message terminate="yes">
        <xsl:value-of
          select="concat('No object class found for managed object definition ', $this-name)" />
      </xsl:message>
    </xsl:if>
    <xsl:value-of
      select="concat('objectclass=',
                     normalize-space($this/adm:profile[@name='ldap']/ldap:object-class/ldap:name),
                     '&#xa;')" />
    <xsl:for-each select="$this-all-properties">
      <xsl:sort select="@name" />
      <xsl:if
        test="not(adm:profile[@name='ldap']/ldap:attribute/ldap:name)">
        <xsl:message terminate="yes">
          <xsl:value-of
            select="concat('No attribute type found for property ', @name, ' in managed object definition ', $this-name)" />
        </xsl:message>
      </xsl:if>
      <xsl:value-of
        select="concat('attribute.',
                       normalize-space(@name),
                       '=',
                       normalize-space(adm:profile[@name='ldap']/ldap:attribute/ldap:name),
                       '&#xa;')" />
    </xsl:for-each>
    <xsl:for-each select="$this-all-relations">
      <xsl:sort select="@name" />
      <xsl:if test="not(adm:profile[@name='ldap']/ldap:rdn-sequence)">
        <xsl:message terminate="yes">
          <xsl:value-of
            select="concat('No RDN sequence found for relation ', @name, ' in managed object definition ', $this-name)" />
        </xsl:message>
      </xsl:if>
      <xsl:value-of
        select="concat('rdn.',
                       normalize-space(@name),
                       '=',
                       normalize-space(adm:profile[@name='ldap']/ldap:rdn-sequence),
                       '&#xa;')" />
      <xsl:choose>
        <xsl:when
          test="adm:profile[@name='ldap']/ldap:naming-attribute">
          <xsl:if test="not(adm:one-to-many)">
            <xsl:message terminate="yes">
              <xsl:value-of
                select="concat('Naming attribute specified for relation ',
                               @name, ' in managed object definition ',
                               $this-name, ' which is not a one-to-many relation.')" />
            </xsl:message>
          </xsl:if>
          <xsl:if test="adm:one-to-many/@naming-property">
            <xsl:message terminate="yes">
              <xsl:value-of
                select="concat('Naming attribute specified for one-to-many relation ',
                               @name, ' in managed object definition ',
                               $this-name, ' which uses a naming property.')" />
            </xsl:message>
          </xsl:if>
          <xsl:value-of
            select="concat('naming-attribute.',
                       normalize-space(@name),
                       '=',
                       normalize-space(adm:profile[@name='ldap']/ldap:naming-attribute),
                       '&#xa;')" />
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of
            select="concat('naming-attribute.', normalize-space(@name), '=cn&#xa;')" />
        </xsl:otherwise>
      </xsl:choose>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>