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

Nicolas Capponi
21.30.2016 d60b0a6e2a91c2739696a8b2f4758d1426d380d6
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
<!--
  The contents of this file are subject to the terms of the Common Development and
  Distribution License (the License). You may not use this file except in compliance with the
  License.
 
  You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
  specific language governing permission and limitations under the License.
 
  When distributing Covered Software, include this CDDL Header Notice in each file and include
  the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
  Header, with the fields enclosed by brackets [] replaced by your own identifying
  information: "Portions Copyright [year] [name of copyright owner]".
 
  Copyright 2006-2010 Sun Microsystems, Inc.
  Portions Copyright 2011-2015 ForgeRock AS.
  Portions Copyright 2012 Delta Victor Consultants
 ! -->
 
<project name="Config framework generation" basedir=".">
  <description>
    This is the build legacy OpenDJ configuration framework.
    This file and the ext/ directory would be able to remove once the migration
    to the new configuration framework (see opendj-config) will be done.
  </description>
 
  <!-- Build JVM properties -->
  <property name="MEM" value="512M"/>
 
  <!-- General server-wide properties                                 -->
  <property name="build.dir"        location="target"/>
  <property name="classes.dir"      location="${build.dir}/classes"    />
  <property name="ext.dir"          location="ext"                     />
 
  <!-- Properties for the ANT build tool.                          -->
  <property name="ant.dir" location="${ext.dir}/ant"                />
 
  <!-- Properties for administration framework code generation. -->
  <property name="admin.defn.dir"  location="${build.dir}/config/admin/defn" />
  <property name="admin.src.dir"   location="src/admin/generated" />
  <property name="admin.rules.dir" location="resource/admin" />
 
  <!-- Validate core administration component XML definition files. -->
  <target name="validateadmin" description="Validate core administration component XML definition files.">
      <schemavalidate>
          <fileset dir="${admin.defn.dir}" includes="**/*.xml" />
          <schema namespace="http://www.opends.org/admin" file="${admin.rules.dir}/admin.xsd"/>
          <schema namespace="http://www.opends.org/admin-ldap" file="${admin.rules.dir}/admin-ldap.xsd"/>
          <schema namespace="http://www.opends.org/admin-cli" file="${admin.rules.dir}/admin-cli.xsd"/>
      </schemavalidate>
  </target>
 
  <!-- Code generation for core administration components. -->
  <target name="generateadmin" depends="validateadmin" description="Code generation for configuration Object.">
    <!-- The XSLT task creates a lot of noise.
         I can't find any other way to shut it up. -->
    <condition property="antcmd" value="ant.bat">
      <os family="windows" />
    </condition>
 
    <condition property="antcmd" value="ant">
      <not>
        <isset property="antcmd" />
      </not>
    </condition>
 
    <exec executable="${ant.dir}/bin/${antcmd}" failonerror="true">
      <arg value="-buildfile" />
      <arg value="${ant.file}" />
      <arg value="-Dbuild.dir=${build.dir}" />
      <arg value="-Dadmin.src.dir=${admin.src.dir}" />
      <arg value="-quiet" />
      <arg value="generateadminsubtask" />
      <env key="ANT_OPTS" value="-Xmx${MEM}" />
      <!-- Set classpath to workaround Apple JDK Xalan conflict -->
      <env key="CLASSPATH" value="${ext.dir}/xalan-j/xalan.jar" />
    </exec>
  </target>
 
  <target name="generateadminsubtask">
    <!-- Xalan-J Class Path : refer to it explicitly from each XSLT task. -->
    <path id="xalan.class.path">
      <fileset dir="${ext.dir}/xalan-j">
        <include name="*.jar" />
      </fileset>
    </path>
 
    <!-- Generate introspection API for core administration components. -->
    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
          style="${admin.rules.dir}/metaMO.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.java" />
      <param name="base-dir" expression="${admin.defn.dir}" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/meta/package-info.java" />
      <param name="type" expression="meta" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <!-- Generate client API for core administration components. -->
    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
          style="${admin.rules.dir}/clientMO.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/client/\2CfgClient.java" />
      <param name="base-dir" expression="${admin.defn.dir}" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/client/package-info.java" />
      <param name="type" expression="client" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <!-- Generate server API for core administration components. -->
    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/*Configuration.xml"
          style="${admin.rules.dir}/serverMO.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/server/\2Cfg.java" />
      <param name="base-dir" expression="${admin.defn.dir}" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <xslt basedir="${admin.defn.dir}" destdir="${admin.src.dir}" includes="**/Package.xml" style="${admin.rules.dir}/package-info.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)\.xml$$" to="\1/server/package-info.java" />
      <param name="type" expression="server" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <!-- Generate LDAP profile for core administration components. -->
    <mkdir dir="${classes.dir}" />
    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/ldap" includes="**/*Configuration.xml"
          style="${admin.rules.dir}/ldapMOProfile.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
      <param name="base-dir" expression="${admin.defn.dir}" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <!-- Generate CLI profile for core administration components. -->
    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/profiles/cli" includes="**/*Configuration.xml"
          style="${admin.rules.dir}/cliMOProfile.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
      <param name="base-dir" expression="${admin.defn.dir}" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <!-- Generate I18N messages for core administration components. -->
    <xslt basedir="${admin.defn.dir}" destdir="${classes.dir}/admin/messages" includes="**/*Configuration.xml"
          style="${admin.rules.dir}/messagesMO.xsl">
      <regexpmapper handledirsep="true" from="^(.*)/([^/]+)Configuration\.xml$$" to="\1/meta/\2CfgDefn.properties" />
      <param name="base-dir" expression="${admin.defn.dir}" />
      <classpath refid="xalan.class.path" />
    </xslt>
 
    <!-- Generate manifest file for core administration components. -->
    <tempfile property="admin.temp.dir" destDir="${build.dir}" prefix="tmp" />
    <mkdir dir="${admin.temp.dir}" />
    <xslt basedir="${admin.defn.dir}" destdir="${admin.temp.dir}" extension=".manifest" includes="**/*Configuration.xml"
          style="${admin.rules.dir}/manifestMO.xsl">
      <classpath refid="xalan.class.path" />
    </xslt>
    <concat destfile="${classes.dir}/admin/core.manifest">
      <fileset dir="${admin.temp.dir}" includes="**/*.manifest" />
    </concat>
    <delete dir="${admin.temp.dir}" />
  </target>
</project>