@@ -85,6 +85,85 @@ if "%KARAF_DATA%" == "" (
8585 set " KARAF_DATA = %KARAF_BASE% \data"
8686)
8787
88+ if " %~1 " == " " goto AWAIT_CACHE_READY
89+ if /i " %~1 " == " console" goto AWAIT_CACHE_READY
90+ goto AFTER_CACHE_READY
91+
92+ :AWAIT_CACHE_READY
93+ set CACHE_FOLDER = %KARAF_DATA% \cache\org.eclipse.osgi
94+ if exist " %CACHE_FOLDER% \.*" goto AFTER_CACHE_READY
95+
96+ set CACHE_REFRESH_LOCK = %KARAF_DATA% \cache-refresh-lock
97+ if exist " %CACHE_REFRESH_LOCK% " goto AFTER_CACHE_READY
98+ type nul > " %CACHE_REFRESH_LOCK% "
99+ echo Refreshing the cache...
100+
101+ set STARTLEVEL_FILE = %KARAF_DATA% \openhab-start-level
102+ set STARTED_TARGET_LEVEL = 10
103+ set STOPPED_TARGET_LEVEL = 0
104+ > " %STARTLEVEL_FILE% " echo %STOPPED_TARGET_LEVEL%
105+
106+ set RUNHIDDEN = wscript //nologo " %TEMP% \runhidden.vbs"
107+ > " %TEMP% \runhidden.vbs" echo CreateObject(" Wscript.Shell" ).Run WScript.Arguments(0), 0, False
108+
109+ echo Awaiting server load...
110+ set KARAF_HOME =
111+ %RUNHIDDEN% " " " %~dp0 karaf.bat" " server"
112+ setlocal EnableDelayedExpansion
113+ set SECONDS_WAITED = 0
114+
115+ :AWAIT_SERVER_STARTED
116+ set LEVEL =
117+ 2 > nul set /p LEVEL = < " %STARTLEVEL_FILE% "
118+ if defined LEVEL (
119+ set /a LEVEL_A = LEVEL > nul 2 >& 1
120+ if not errorlevel 1 (
121+ if !LEVEL_A! GEQ %STARTED_TARGET_LEVEL% goto SERVER_STARTED
122+ )
123+ )
124+ if !SECONDS_WAITED! GEQ 30 (
125+ echo Wait timed out!
126+ goto SERVER_STARTED
127+ )
128+ timeout /t 1 /nobreak > nul
129+ set /a SECONDS_WAITED = ! SECONDS_WAITED! + 1
130+ goto AWAIT_SERVER_STARTED
131+
132+ :SERVER_STARTED
133+ endlocal
134+
135+ echo Awaiting server unload...
136+ set KARAF_HOME =
137+ %RUNHIDDEN% " " " %~dp0 karaf.bat" " stop"
138+ setlocal EnableDelayedExpansion
139+ set SECONDS_WAITED = 0
140+
141+ :AWAIT_SERVER_STOPPED
142+ set LEVEL =
143+ 2 > nul set /p LEVEL = < " %STARTLEVEL_FILE% "
144+ if defined LEVEL (
145+ set /a LEVEL_A = LEVEL > nul 2 >& 1
146+ if not errorlevel 1 (
147+ if !LEVEL_A! EQU %STOPPED_TARGET_LEVEL% goto SERVER_STOPPED
148+ )
149+ )
150+ if !SECONDS_WAITED! GEQ 30 (
151+ echo Wait timed out!
152+ goto SERVER_STOPPED
153+ )
154+ timeout /t 1 /nobreak > nul
155+ set /a SECONDS_WAITED = ! SECONDS_WAITED! + 1
156+ goto AWAIT_SERVER_STOPPED
157+
158+ :SERVER_STOPPED
159+ endLocal
160+ del " %CACHE_REFRESH_LOCK% " 2 > nul
161+ set KARAF_HOME =
162+ " %~dp0 karaf.bat" console
163+ exit /b %ERRORLEVEL%
164+
165+ :AFTER_CACHE_READY
166+
88167if not " %KARAF_ETC% " == " " (
89168 if not exist " %KARAF_ETC% " (
90169 call :warn KARAF_ETC is not valid: " %KARAF_ETC% "
0 commit comments