From 38bdc0d97be50d62fc7f18561480685808a50217 Mon Sep 17 00:00:00 2001
From: al_xipe <al_xipe@localhost>
Date: Wed, 14 Feb 2007 06:38:11 +0000
Subject: [PATCH] refactoring in the installer to make it easier to maintain

---
 opendj-sdk/opends/tests/installer.xml |  350 +++++++++++++++++++++++++--------------------------------
 1 files changed, 153 insertions(+), 197 deletions(-)

diff --git a/opendj-sdk/opends/tests/installer.xml b/opendj-sdk/opends/tests/installer.xml
index dc3df2d..2efb971 100644
--- a/opendj-sdk/opends/tests/installer.xml
+++ b/opendj-sdk/opends/tests/installer.xml
@@ -45,7 +45,15 @@
 	<!-- Define default values for mandatory properties in case the
 		property files would not be found
 	-->
-	
+  <condition property="script.ext" value=".bat">
+    <os family="windows"/>
+  </condition>
+  <condition property="script.ext" value="">
+    <not>
+      <isset property="script.ext"/>
+    </not>
+  </condition>
+  <!-- Usage section - top -->	
 	<target name="usage">
 		<echo>Installer usage: 
   status     : reports if product is installed and/or running
@@ -61,209 +69,157 @@
   uninstall  : uninstall the product if it is installed
 		</echo>
 	</target>
+  <!-- Usage section - bottom -->	
 	
-	<!-- Installation -->
-	<target name="install.do" 
-          description="deploy the product bits"
-					unless="product.installed"          >
-		<echo message="Installing ${product.name} ${product.version}..." />
-    <property name="config.file"   
-              location="${full.install.dir}/config/config.ldif"/>
-    <mkdir dir="${install.dir}"/>
-    <unzip dest="${install.dir}">
-      <fileset dir="${project.home}/build/package">
-        <include name="*.zip"/>
-      </fileset>
-    </unzip>
-    <chmod perm="755">
-      <fileset dir="${full.install.dir}/bin">
-        <exclude name="*.bat"/>
-      </fileset>
-    </chmod>
-  </target>
-	
-	<target name="install" >
-    <available file="${full.install.dir}" 
-              type="dir" 
-              property="product.installed" />
-		<antcall target="install.do"           />
-	</target>
+	<!-- Installation section - top -->
+    <target name="install-do" 
+            description="deploy the product bits"
+            unless="product.installed"          >
+      <echo message="Installing ${product.name} ${product.version}..." />
+      <property name="config.file"   
+                location="${full.install.dir}/config/config.ldif"/>
+      <mkdir dir="${install.dir}"/>
+      <unzip dest="${install.dir}">
+        <fileset dir="${project.home}/build/package">
+          <include name="*.zip"/>
+        </fileset>
+      </unzip>
+      <chmod perm="755">
+        <fileset dir="${full.install.dir}/bin">
+          <exclude name="*.bat"/>
+        </fileset>
+      </chmod>
+    </target>
+    
+    <target name="install" depends="status-do,install-do"/>
 	<!-- end of install related targets -->
 	
-	<!-- Uninstallation -->
-  <target name="uninstall.do"
-          description="Uninstall the product"
-					if="product.installed"            >
-		<echo message="Uninstalling ${product.name} ${product.version}..." />
-    <delete dir="${install.dir}" />
-  </target>
-	<target name="uninstall">
-    <available file="${full.install.dir}" 
-              type="dir" 
-              property="product.installed" />
-		<antcall target="uninstall.do"         />
-	</target>
-	<!-- end of uninstall related targets -->
+	<!-- Uninstallation section - top -->
+    <target name="uninstall-do"
+            description="Uninstall the product"
+            if="product.installed">
+      <echo message="Uninstalling ${product.name} ${product.version}..." />
+      <delete dir="${install.dir}" />
+    </target>
+    <target name="uninstall" depends="status-do,stop-do,uninstall-do"/>
+	<!-- Uninstallation section - bottom -->
 	
-	<!-- configuration -->
+	<!-- Configuration secton - top -->
+    <target name="configure-do"
+            description="configures product to listen on the right port number"
+            if="product.installed" >
+      <echo message="basedir=[${basedir}]" />
+      <echo message="configuring ${product.name} ${product.version}..." />
+      <java fork="true" classname="org.opends.server.tools.ConfigureDS">
+        <!-- building the classpath to run the configurator -->
+        <classpath>
+          <fileset dir="${full.install.dir}/lib">
+            <include name="*.jar"/>
+          </fileset>
+        </classpath>
+        
+        <!-- provide the arguments here -->
+        <jvmarg value="-Dorg.opends.server.scriptName=configure-ds"/>
+        <arg value="--configClass"/>
+        <arg value="org.opends.server.extensions.ConfigFileHandler"/>
+        <arg value="--configFile"/>
+        <arg value="${full.install.dir}/config/config.ldif"/>
+        <arg line="-p ${port.ldap}"/>
+        <arg value="-D"/>
+        <arg value="${bind.dn}"/>
+        <arg value="-w"/>
+        <arg value="${bind.pwd}"/>
+      </java>
+    </target>
+    
+    <target name="configure" depends="status-do,configure-do"/>
+	<!-- Configuration section - bottom -->
+	
+	<!-- Start section - top -->
+    <target name="start-do" 
+            description="start the product" 
+            if="product.installed"
+            unless="product.running" >
+      <echo message="Starting ${product.name} ${product.version}... on ${os.name}" />
+      <exec
+        executable="${full.install.dir}${file.separator}bin${file.separator}start-ds${script.ext}"
+       spawn="true"/>
+    </target>
+    <target name="start" depends="status-do,start-do"/>
+	<!--  Start section - bottom -->
   
-
-  <target name="configure.do"
-          description="configures product to listen on the right port number"
-					if="product.installed" >
-    <echo message="basedir=[${basedir}]" />
-		<echo message="configuring ${product.name} ${product.version}..." />
-    <java fork="true" classname="org.opends.server.tools.ConfigureDS">
-      <!-- building the classpath to run the configurator -->
-      <classpath>
-        <fileset dir="${full.install.dir}/lib">
-          <include name="*.jar"/>
-        </fileset>
-      </classpath>
+  <!-- Stop section - top -->
+    <target name="stop.force"
+            description="stop the server">
+      <echo message="Stopping ${product.name} ${product.version}..." />
+      <exec
+        executable="${full.install.dir}${file.separator}bin${file.separator}stop-ds${script.ext}"
+        spawn="true">
+        <arg line="-h ${host.name}"/>
+        <arg line="-p ${port.ldap}"/>
+        <arg line="-w ${bind.pwd}" />
+        <arg value="-D"            />
+        <arg value="${bind.dn}"    />
+      </exec>
+    </target>
+    
+    <target name="stop-do" if="product.running">
+      <antcall target="stop.force" />
+    </target>
+    
+    <target name="stop" depends="status-do,stop-do"/>
+  
+    <target name="sleep" if="product.running">
+      <echo message="Give the server some time to shut down and release locks..." />
+      <sleep seconds="10"         />  
+    </target>
+    <target name="stop.sleep" depends="stop,sleep"/>
+  <!-- Stop section - bottom -->
+	
+	<!-- Status section - top -->
+    <target name="status-do" description="gather status">
+      <available file="${full.install.dir}" 
+                type="dir" 
+                property="product.installed" />
+      <condition property="product.running">
+        <socket port="${port.ldap}" server="${host.name}"/>
+      </condition>
+    </target>
+    <target name="is-product-running?" if="product.running">
+      <echo message="${product.name} is listening on port [${port.ldap}]"/>
+    </target>  
+    <target name="is-product-not-running?" unless="product.running">
+      <echo message="${product.name} is NOT running"/>
+    </target>
+    <target name="is-product-installed?" if="product.installed">
+      <echo message="Found ${product.name} installed in [${full.install.dir}]" />
+      <antcall target="is-product-running?"/>
+      <antcall target="is-product-not-running?"/>
+    </target>
+    <target name="is-product-not-installed?" unless="product.installed">
+      <echo message="Could not find ${product.name} installation." />
+    </target>
+      <!-- end of installation status -->
       
-      <!-- provide the arguments here -->
-      <jvmarg value="-Dorg.opends.server.scriptName=configure-ds"/>
-      <arg value="--configClass"/>
-      <arg value="org.opends.server.extensions.ConfigFileHandler"/>
-      <arg value="--configFile"/>
-      <arg value="${full.install.dir}/config/config.ldif"/>
-      <arg line="-p ${port.ldap}"/>
-      <arg value="-D"/>
-      <arg value="${bind.dn}"/>
-      <arg value="-w"/>
-      <arg value="${bind.pwd}"/>
-    </java>
-  </target>
-	
-	<target name="configure">
-    <available file="${full.install.dir}" 
-              type="dir" 
-              property="product.installed" />
-		<antcall target="configure.do" />
-	</target>
-	<!-- end of config related targets -->
-	
-	<!-- start -->
-  <target name="start.do" 
-          description="start the product" 
-          if="product.installed"
-          unless="product.running" >
-		<echo message="Starting ${product.name} ${product.version}... on ${os.name}" />
-    <exec
-      os="${windows.list}"
-      executable="${full.install.dir}\bin\start-ds.bat"
-     spawn="true"                                                           />
-    <exec
-      os="${unix.list}"
-      executable="${full.install.dir}/bin/start-ds"
-      spawn="true"                                                           />
-  </target>
-	<target name="start">
-    <available file="${full.install.dir}" 
-              type="dir" 
-              property="product.installed" />
-    <condition property="product.running">
-      <socket port="${port.ldap}" server="${host.name}"/>
-    </condition>
-		<antcall target="start.do" />
-	</target>	
-	<!--  end of start related targets -->
-  
-  <!-- stop  -->
-  <target name="stop.force"
-          description="stop the server">
-		<echo message="Stopping ${product.name} ${product.version}..." />
-    <exec
-      os="${windows.list}"
-      executable="${full.install.dir}\bin\stop-ds.bat"
-      spawn="true">
-      <arg line="-h ${host.name}"/>
-      <arg line="-p ${port.ldap}"/>
-      <arg line="-w ${bind.pwd}" />
-      <arg value="-D"            />
-      <arg value="${bind.dn}"    />
-    </exec>
-    <exec 
-      os="${unix.list}"
-      executable="${full.install.dir}/bin/stop-ds" 
-      spawn="true"                                   >
-      <arg line="-h ${host.name}"/>
-      <arg line="-p ${port.ldap}"/>
-      <arg line="-w ${bind.pwd}" />
-      <arg value="-D"            />
-      <arg value="${bind.dn}"    />
-    </exec>
-  </target>
-	<target name="stop.do" if="product.running">
-		<antcall target="stop.force" />
-	</target>
-  <target name="stop" >
-    <condition property="product.running">
-      <socket port="${port.ldap}" server="${host.name}"/>
-    </condition>
-		<antcall target="stop.do" />
-	</target>
-  
-  <target name="sleep" if="product.running">
-    <echo message="Give the server some time to shut down and release locks..." />
-    <sleep seconds="10"         />  
-  </target>
-  <target name="stop.sleep" >
-    <condition property="product.running">
-      <socket port="${port.ldap}" server="${host.name}"/>
-    </condition>
-		<antcall target="stop.do" />
-    <antcall target="sleep" />
-	</target>
-
-	<!-- end of stop related targets -->
-	
-	<!-- status -->
-	  <!-- Installation status -->
-	<target name="is-product-installed?" if="product.installed">
-		<echo message="Found ${product.name} installed in [${full.install.dir}]" />
-	</target>
-	<target name="is-product-not-installed?" unless="product.installed">
-		<echo message="Could not find ${product.name} installation." />
-	</target>
-		<!-- end of installation status -->
-		
-		<!-- Running status -->
-  <target name="is-product-running?" if="product.running">
-    <echo message="${product.name} is listening on port [${port.ldap}]"/>
-  </target>  
-  <target name="is-product-not-running?" unless="product.running">
-    <echo message="${product.name} is NOT running"/>
-  </target>
-		<!-- end of running status -->
-	<target name="status">
-    <available file="${full.install.dir}" 
-              type="dir" 
-              property="product.installed" />
-    <condition property="product.running">
-      <socket port="${port.ldap}" server="${host.name}"/>
-    </condition>
-		<antcall target="is-product-installed?"     />
-		<antcall target="is-product-not-installed?" />
-		<antcall target="is-product-running?"       />
-		<antcall target="is-product-not-running?"   />
-	</target>
-	<!--  end of status related tasks -->
+      <!-- Running status -->
+    <target name="status" depends="status-do,is-product-installed?,is-product-not-installed?"/>
+	<!--  Status section - bottom -->
 
 	<!-- macros - chained operations -->
-	<target name="bootstrap">
-		<echo message="Bootstrap: wipe the plate clean in case there is a previous install"/>
-		<antcall target="wipeout" />
-		<echo message="Bootstrap: install the product" />
-		<antcall target="install"   />
-		<antcall target="configure" />
-		<antcall target="start"     />
-	</target>
-	
-	<target name="wipeout">
-	  <echo message="Wipeout: removing product" />
-		<antcall target="stop.sleep"  />
-		<antcall target="uninstall"   />
-	</target>
+    <target name="bootstrap"> 
+      <echo message="Bootstrap: wipe the plate clean in case there is a previous install"/>
+      <antcall target="wipeout" />
+
+      <echo message="Bootstrap: install the product" />
+      <antcall target="install"   />
+      <antcall target="configure" />
+      <antcall target="start"     />
+    </target>
+    
+    <target name="wipeout" if="product.installed" depends="status-do">
+      <echo message="Wipeout: removing product" />
+      <antcall target="stop.sleep"  />
+      <antcall target="uninstall"   />
+    </target>
 	<!--  end of macros related targets-->
 </project>

--
Gitblit v1.10.0