<?xml version="1.0" encoding="UTF-8"?>
<!--
     ============LICENSE_START=======================================================
     org.onap.dmaap
     ================================================================================
     Copyright © 2017 AT&T Intellectual Property. All rights reserved.
     ================================================================================
     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at
           http://www.apache.org/licenses/LICENSE-2.0
     
     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
     ============LICENSE_END=========================================================
   
     ECOMP is a trademark and service mark of AT&T Intellectual Property.
     
 -->

<project>
	<target name="runLocal">
		<java dir="${basedir}" fork="yes" newenvironment="true" failonerror="true" classname="com.att.ajsc.runner.Runner">
			<classpath path="${classpath}:${basedir}/ajsc-shared-config/etc:${runAjscHome}/lib/ajsc-runner-${ajscRuntimeVersion}.jar" />

				<!-- Windows Users may need to add a jvmarg arg to create a temp directory properly. -->
				<!-- <jvmarg value="-Djava.io.tmpdir=C:/yourTempDirectory"/>  -->

				<!-- Uncomment the following 2 jvmarg values to enable Remote Debugging.
			for more information on how to setup Remote Debugger -->
				<!-- <jvmarg value="-Xdebug" /> -->
				<!-- <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432" /> -->

				<jvmarg value="-XX:MaxPermSize=512m" />
				<jvmarg value="-Xmx1024m" />

				<!-- Main ajsc Variables below (Variables necessary for proper startup of AJSC) -->
				<env key="AJSC_HOME" value="${runAjscHome}" />
				<sysproperty key="AJSC_HOME" value="${runAjscHome}" />
				<!-- you may specify any external location for AJSC_CONF_HOME where etc folder 
				& all other configs can be found under it. If not specified, it will default to AJSC_HOME -->
				<sysproperty key="AJSC_CONF_HOME" value="${basedir}/bundleconfig-local" />
				<sysproperty key="AJSC_SHARED_CONFIG" value="${basedir}/ajsc-shared-config" />

				<!-- Location of logback.xml file used for logging configurations. Please, note, when deploying a service
				to either CSI or NON-CSI environment, this system property will be set in sys-props.properties file. We
				are setting it here for running locally due to the ease of use of maven variable for basedir. -->
				<sysproperty key="logback.configurationFile" value="${basedir}/ajsc-shared-config/etc/logback.xml" />

				<!-- Setting system properties for the AJSC external libs and properties folders below. When deploying to 
				a node, these properties will be set within the bundleconfig/etc/sysprops/sys-props.properties file.
				However, when running locally, the ${basedir} substitution works more efficiently in this manner. -->
				<sysproperty key="AJSC_EXTERNAL_LIB_FOLDERS" value="${basedir}/target/commonLibs" />
				<sysproperty key="AJSC_EXTERNAL_PROPERTIES_FOLDERS" value="${basedir}/ajsc-shared-config/etc" />

				<!-- End of Main ajsc Variables below (Variables necessary for proper startup of AJSC) -->

				<!-- Uncomment the following line to add oauthentication to your Service -->
				<!-- <sysproperty key="spring.profiles.active" value="oauth" /> -->

				<!-- If using Cassandra as Database, Enter the ip/host and port below based on your known configuration -->
				<!-- <sysproperty key="cassandra.ip" value="hostname" /> -->
				<!-- <sysproperty key="cassandra.port" value="9042" /> -->

				<!-- The APP_SERVLET_URL_PATTERN variable is defaulted to "/services" within 
				 the initial configuration of the AJSC. If you are changing the CamelServlet 
				 Filter within the ajsc-override-web.xml, you should use that url-pattern 
				 here. This is necessary to properly register your service with dme2. An empty 
				 value, "", is used when NO value is wanted (url-pattern would be /* for 
				 CamelServlet Filter) -->
				<!-- As of 4.5.1, this property is no longer needed -->
				<!-- <sysproperty key="APP_SERVLET_URL_PATTERN" value="/services" /> -->

				<!-- GRM/DME2 System Properties below -->
				<sysproperty key="AJSC_SERVICE_NAMESPACE" value="${module.ajsc.namespace.name}" />
				<sysproperty key="AJSC_SERVICE_VERSION" value="${module.ajsc.namespace.version}" />
				<sysproperty key="SOACLOUD_SERVICE_VERSION" value="${project.version}" />
				<!-- End of GRM/DME2 System Property Variables -->

				<!-- The following server.port variable was necessary for the proper registration 
				 of the AJSC to dme2. This value may still need to be used if the Developer is
				 hardcoding their port (example: 8080). Then, the server.port value="8080".
				 The default functionality for the AJSC is to use EPHEMERAL ports. In this
				 case, you do NOT need to set the server.port value. The AJSC will find the
				 proper port value and register to dme2 correctly -->
				<!-- <sysproperty key="server.port" value="${serverPort}" /> -->

				<!-- Command Line Arguments to add to the java command. Here, you 
				 can specify the port as well as  the Context you want your service
				 to run in. Use context=/ to run in an unnamed Context (Root Context).
				 The default configuration of the AJSC is to run under the /ajsc Context.
				 Setting the port here can aid during the development phase of your
				 service. However, you can leave this argument out entirely, and the
				 AJSC will default to using an Ephemeral port. -->
				<arg line="context=/ port=${serverPort} sslport=${sslport}" />
			</java>
		</target>
		<target name="prep_home_directory_for_swm_pkgcreate">
			<!-- These tasks are copying contents from the installHomeDirectory into 
			the eventual $AJSC_HOME directory for running locally and soa cloud installation -->
			<echo message="ENTERING 'prep_home_directory_for_swm_pkgcreate' ant tasks" />

			<!-- Please, NOTE: The ajsc-archetype is setup for a default CSI Env deployment. If you are deploying to a CSI Env, 
			you should NOT have to change anything within this build file. However, if you are NOT deploying to a CSI Env, 
			you should comment OUT the CSI related portion of this build.xml. -->

			<!-- The following code snippet is copying the bundleconfig-csi directory to the proper installation/bundleconfig directory
			used in CSI envs. If you are NOT installing to a CSI node, you should comment out (or delete) the following snippet, 
			and uncomment the NON-CSI copy task to copy EVERYTHING to the installation/bundleconfig directory.  -->

			<!-- CSI related bundleconfig copy task. If you are NOT deploying to a CSI Env, please COMMENT OUT or delete the following 
			copy task code snippet. -->
			<!--<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/bundleconfig" failonerror="true">
				<fileset dir="${basedir}/bundleconfig-csi" />
			</copy>-->
			<!-- End of CSI related bundleconfig copy task -->

			<!-- NOTE: If you are NOT deploying to CSI environment, and you are NOT using an AJSC_SHARED_CONFIG location on a
			node, you should go ahead and copy EVERYTHING from bundleconfig and ajsc-shared-config (logback.xml) directory
			to utilize proper logging from logback.xml. Simply, uncomment the following code snippet below to copy EVERYTHING and
			comment out the CSI related build script above. -->
			<!-- NON-CSI related build copy task. Please, uncomment the following code snippet to deploy the proper artifacts to a NON-CSI Env. -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/bundleconfig" failonerror="true">
				<fileset dir="${basedir}/bundleconfig-local" includes="**/**" />
			</copy>
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/bundleconfig/etc" failonerror="true">
				<fileset dir="${basedir}/ajsc-shared-config/etc" includes="**/**" />
			</copy>
			<!-- End of NON-CSI related build copy task. -->

			<!-- Copying any zips (deployment packages) to $AJSC_HOME/services for 
			auto-deployment -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/services" failonerror="false">
				<fileset dir="${basedir}/services" includes="*.zip" />
			</copy>

			<!-- Copying runtimeEnvironment zip file to $AJSC_HOME/runtime and renaming runtimeEnvironment.zip for 
			proper auto-deployment of ajsc services.  -->
			<!--<copy tofile="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/runtime/runtimeEnvironment.zip">
				<fileset dir="target" includes="*-runtimeEnvironment.zip" />
			</copy>-->

			<!-- Copying dependencies from the service project (not provided by AJSC 
			Container) to the $AJSC_HOME/extJars folder to be accessible on the classpath -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extJars" failonerror="false">
				<fileset dir="target/userjars" includes="*" />
			</copy>

			<!-- extApps directory MUST be created for ajsc-runner to run correctly, 
			even if empty. DO NOT REMOVE!!! -->
			<!-- extApps directory created to deploy other war files on startup or hot deploy War files after ajsc 
			starts up.  -->
			<mkdir dir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extApps" />

			<!-- Copying any extra wars to $AJSC_HOME/extApps to be deployed within 
			AJSC -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extApps" failonerror="false">
				<fileset dir="${basedir}/src/main/resources/extApps" includes="*" />
			</copy>

			<!-- staticContent folder is for serving static content within an ajsc service. Any static content to be served 
			will be copyied to the ultimate $AJSC_HOME/staticContent folder and can be served with the att-static-content
			camel component.  -->
			<!-- Uncomment the following snippet to copy items from staticContent folder to ultimate $AJSC_HOME/staticConent -->
			<!-- <copy
			toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/staticContent"
			failonerror="false">
			<fileset dir="${basedir}/staticContent" includes="**/**" />
		</copy> -->

			<!-- Copying extra jar files that have been labeled as dependencies in service project 
			to /extJars folder to be made available on the classpath for your service -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/extJars" failonerror="false">
				<fileset dir="target" includes="*.jar" />
			</copy>

			<!-- Copying deployment packages created within the project to the $AJSC_HOME/services folder to be auto
			deployed.  -->
			<copy toDir="${basedir}/target/swm/package/nix/dist_files${distFilesRoot}/services">
				<fileset dir="target" includes="*.zip" excludes="*-runtimeEnvironment.zip" />
			</copy>

			<echo message="EXITING 'prep_assembly_output_for_swm_plugin' ant tasks" />
		</target>
	</project>