@echo off

Rem **************************************************************************
Rem Test if CMD Extensions are available
Rem **************************************************************************
verify other 2>nul
setlocal enableextensions
if errorlevel 1 (
  if not "%SERVERSTARTED%" == "1" (
    set SERVERSTARTED=1
    goto restartext
  )
)

Rem **************************************************************************
Rem Check if the first parameter is sapjvm="<path>"
Rem **************************************************************************
if %1==sapjvm (
  set JAVA_HOME=%2
)else (
  echo WARNING: No sapjvm path in command, try to use JAVA_HOME.
)

Rem **************************************************************************
Rem Determine java executable
Rem **************************************************************************
if DEFINED JAVA_HOME (
  set JAVA_CMD="%JAVA_HOME%\bin\java"
  echo Using JDK %JAVA_HOME%.
) else (
  echo WARNING: Environment variable JAVA_HOME not set, try to launch java from current PATH.
  set JAVA_CMD=java
)

Rem **************************************************************************
Rem Set extra parameters for the Java virtual machine
Rem **************************************************************************
Rem Set maximum heap size:
set JAVA_CMD=%JAVA_CMD% -Xmx256m

Rem Create heap dump on out of memory error:
Rem This option is not supported by all JVM versions
Rem Uncomment only if needed and the JVM used supports the -XX:+HeapDumpOnOutOfMemoryError option 
Rem set JAVA_CMD=%JAVA_CMD% -XX:+HeapDumpOnOutOfMemoryError

Rem **************************************************************************
Rem We are coming from work-dir of sapstart
Rem **************************************************************************
cd ..\..
set SDTSERVER_HOME=%CD%/SYS/global/SDT

Rem **************************************************************************
Rem change to root directory of SDTServer and delete old jar lib\sdt_server.jar
Rem **************************************************************************
cd %SDTSERVER_HOME%  && DEL /F /Q  lib\sdt_server.jar

set SDTSERVER_CLASSPATH=%SDTSERVER_HOME%\lib\sdt_compatibility.jar
set SDTSERVER_CLASSPATH=%SDTSERVER_CLASSPATH%;%SDTSERVER_HOME%\lib\sdt_slctrl.jar
set SDTSERVER_CLASSPATH=%SDTSERVER_CLASSPATH%;%SDTSERVER_HOME%\lib\sdt_mxp.jar

set SRVARG=-srvarg=/SDTExecutionService/restart
set RESTART_OPT=%SRVARG%=false

:restartloop
%JAVA_CMD% -cp %SDTSERVER_CLASSPATH% SDTServer rootdir=%SDTSERVER_HOME% %RESTART_OPT% %*

set RETCODE=%ERRORLEVEL%
if %RETCODE% == 42 goto selfpatch
goto exit

:selfpatch
call SAPCAR.EXE -xvf LUP.SAR
set RETCODE=%ERRORLEVEL%
if NOT %RETCODE% == 0 (
  echo ERROR: SDTServer self patch failed with rc=%RETCODE%
  goto exit
)
set RESTART_OPT=%SRVARG%=true 
goto restartloop

Rem **************************************************************************
:restartext
echo *** Restarting script enabling CMD extensions
cmd /E:ON /C call %0 %*
goto exit

:exit
