/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠInter shop ĠCom munications ĠAG . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . inter shop . gradle . ic m . docker . tasks Ċ Ċ import Ġcom . inter shop . gradle . ic m . docker . extension . Inter shop Docker Extension Ċ import Ġcom . inter shop . gradle . ic m . docker . utils . Configuration Ċ import Ġorg . gradle . api . model . ObjectFactory Ċ import Ġorg . gradle . api . provider . List Property Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . gradle . api . tasks . Input Ċ import Ġorg . gradle . api . tasks . options . Option Ċ import Ġorg . gradle . kotlin . dsl . getBy Type Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠStart Server Container ĊĠĠĠ Ġ@ Inject Ġconstructor ( object Factory : ĠObject Factory ) Ġ: ĠStart Extra Container ( object Factory ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdebug Property : ĠProperty < Boolean > Ġ= Ġobject Factory . property ( Boolean :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġj mx Property : ĠProperty < Boolean > Ġ= Ġobject Factory . property ( Boolean :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġgc log Property : ĠProperty < Boolean > Ġ= Ġobject Factory . property ( Boolean :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġheap dump Property : ĠProperty < Boolean > Ġ= Ġobject Factory . property ( Boolean :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġapp server Property : ĠProperty < String > Ġ= Ġobject Factory . property ( String :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġenv props Property : ĠList Property < String > Ġ= Ġobject Factory . list Property ( String :: class . java ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnable Ġdebugging Ġfor Ġthe Ġprocess . ĠThe Ġprocess Ġis Ġstarted Ġsus pended Ġand Ġlistening Ġon Ġport Ġ 5 0 0 5 . ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġconfigured Ġalso Ġover Ġthe Ġgradle Ġparameter Ġ" debug - java ". ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġdebug Ġis Ġthe Ġtask Ġproperty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ set : Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption Ġ= Ġ" debug - jvm ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Enable Ġdebugging Ġfor Ġthe Ġprocess ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġprocess Ġis Ġstarted Ġsus pended Ġand Ġlistening Ġon Ġport Ġ 5 0 0 5 ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġvar Ġdebug : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdebug Property . get () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdebug Property . set ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Debug () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnable Ġj mx Ġport Ġfor Ġthe Ġprocess . ĠThe Ġprocess Ġlistening Ġon Ġport Ġ 7 7 4 7 . ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġconfigured Ġalso Ġover Ġthe Ġgradle Ġparameter Ġ" j mx ". ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġj mx Ġis Ġthe Ġtask Ġproperty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ set : Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption Ġ= Ġ" j mx ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Enable Ġj mx Ġfor Ġthe Ġprocess . ĠThe Ġprocess Ġlistening Ġon Ġport Ġ 7 7 4 7 ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġvar Ġj mx : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġj mx Property . get () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġj mx Property . set ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenv Vars . put (" ENABLE _ J MX ", Ġ" true ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġproject . extensions . getBy Type < Inter shop Docker Extension >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp J MX Container Port Ġ= Ġextension . development Config . getConfig Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . AS _ J MX _ CON NE CTOR _ CONTAINER _ PORT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . AS _ J MX _ CON NE CTOR _ CONTAINER _ PORT _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp J MX Port Ġ= Ġextension . development Config . getConfig Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . AS _ J MX _ CON NE CTOR _ PORT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration . AS _ J MX _ CON NE CTOR _ PORT _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Config . port Bindings . add ("${ http J MX Port }:${ http J MX Container Port }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnable Ġgc log Ġfor Ġthe Ġprocess . ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġconfigured Ġalso Ġover Ġthe Ġgradle Ġparameter Ġ" gc log ". ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġgc log Ġis Ġthe Ġtask Ġproperty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ set : Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption Ġ= Ġ" gc log ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Enable Ġgc log Ġfor Ġthe Ġprocess ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġvar Ġgc log : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġgc log Property . get () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgc log Property . set ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenv Vars . put (" ENABLE _ GC LOG ", Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnable Ġheap dump Ġfor Ġthe Ġprocess . ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġconfigured Ġalso Ġover Ġthe Ġgradle Ġparameter Ġ" heap dump ". ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġheap dump Ġis Ġthe Ġtask Ġproperty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ set : Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption Ġ= Ġ" heap dump ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Enable Ġheap dump Ġcreation Ġfor Ġthe Ġprocess ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġvar Ġheap dump : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġheap dump Property . get () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheap dump Property . set ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . env Vars . put (" ENABLE _ HEAP DUMP ", Ġ" true ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġan Ġspecial Ġname Ġfor Ġan Ġapp server Ġover ĊĠĠĠĠ Ġ* Ġenvironment Ġvariable ĠSERVER _ NAME . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ set : Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption Ġ= Ġ" app server ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Provide Ġa Ġspecial Ġname Ġfor Ġthe Ġapp server ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġvar Ġapp server : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġapp server Property . get () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp server Property . set ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( value . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenv Vars . put (" SERVER _ NAME ", Ġapp server Property . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġenvironment Ġproperties Ġto Ġprovide Ġadditional ĊĠĠĠĠ Ġ* Ġenvironment Ġvariables . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ set : Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption Ġ= Ġ" env props ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Provide Ġa Ġadditional Ġenvironment Ġparameters Ġfor Ġthe Ġapp server ." ĊĠĠĠ Ġ) ĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġvar Ġenv props : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġenv props Property . get () ĊĠĠĠĠĠĠĠ Ġset ( list ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenv props Property . set ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ Ġ Ġprop Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpl Ġ= Ġprop . split (" =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( pl . size Ġ> Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenv Vars . put ( pl [ 0 ], Ġpl [ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . quiet (" This Ġis Ġnot Ġa Ġcorrect Ġparameter : Ġ{}", Ġprop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdebug Property . convention ( false ) ĊĠĠĠĠĠĠĠ Ġj mx Property . convention ( false ) ĊĠĠĠĠĠĠĠ Ġgc log Property . convention ( false ) ĊĠĠĠĠĠĠĠ Ġheap dump Property . convention ( false ) ĊĠĠĠĠĠĠĠ Ġapp server Property . convention ("") ĊĠĠĠĠĠĠĠ Ġenv props Property . empty () ĊĊĠĠĠĠĠĠĠ Ġval Ġdebug Ġ= ĠSystem . getProperty (" debug - jvm ", Ġ" false ") ĊĠĠĠĠĠĠĠ Ġif ( debug Ġ!= Ġ" false ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Debug () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Debug () Ġ{ ĊĠĠĠĠĠĠĠ Ġenv Vars . put (" ENABLE _ DEBUG ", Ġ" true ") ĊĠĠĠĠĠĠĠ Ġhost Config . port Bindings . add (" 5 0 0 5 : 7 7 4 6 ") ĊĠĠĠ Ġ} Ċ } Ċ