/* Ċ Ġ* ĠSys - Api Ġ( https :// github . com / Kr ill sson / sys - api ) Ċ Ġ* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠChristian ĠJ ens en Ġ/ ĠKr ill sson Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠMaint ainers : Ċ Ġ* Ġcontact [ at ] ch rist ian - j ens en [ dot ] se Ċ Ġ*/ Ċ package Ġcom . kr ill sson . sys api . rest Ċ Ċ import Ġcom . kr ill sson . sys api . auth . Basic Author izer Ċ import Ġcom . kr ill sson . sys api . core . domain . history . System History Entry Ċ import Ġcom . kr ill sson . sys api . core . domain . processes . Process Sort Ċ import Ġcom . kr ill sson . sys api . core . domain . system . Jvm Properties Ċ import Ġcom . kr ill sson . sys api . core . domain . system . System Info Ċ import Ġcom . kr ill sson . sys api . core . domain . system . System Load Ċ import Ġcom . kr ill sson . sys api . core . history . Metrics History Manager Ċ import Ġcom . kr ill sson . sys api . core . metrics . System Metrics Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Supplier Ċ import Ġjavax . annotation . security . Roles Allowed Ċ import Ġjavax . ws . rs .* Ċ import Ġjavax . ws . rs . core . MediaType Ċ import Ġjavax . ws . rs . core . Response Ċ Ċ @ Path (" system ") Ċ @ Produces ( MediaType . APPLICATION _ JSON ) Ċ @ Roles Allowed ( Basic Author izer . AUTHENT IC ATED _ ROLE ) Ċ class ĠSystem Resource ( ĊĠĠĠ Ġprivate Ġval Ġsystem Metrics : ĠSystem Metrics , ĊĠĠĠ Ġprivate Ġval Ġhistory Manager : ĠMetrics History Manager , ĊĠĠĠ Ġprivate Ġval Ġu ptime Supplier : ĠSupplier < Long > Ċ ) Ġ{ ĊĠĠĠ Ġ@ GET ĊĠĠĠ Ġfun Ġget Root (): ĠSystem Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsystem Metrics . system Info () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GET ĊĠĠĠ Ġ@ Path (" load ") ĊĠĠĠ Ġfun Ġget Load ( ĊĠĠĠĠĠĠĠ Ġ@ QueryParam (" sortBy ") Ġprocess Sort : ĠOptional < String >, ĊĠĠĠĠĠĠĠ Ġ@ QueryParam (" limit ") Ġlimit : ĠOptional < Int > ĊĠĠĠ Ġ): ĠSystem Load Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠsortBy Ġ= ĠDEFAULT _ PROCESS _ ORDER ĊĠĠĠĠĠĠĠ Ġif Ġ( process Sort . isPresent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġprocess Sort . get (). toUpperCase () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsortBy Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Sort . valueOf ( method ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalid Options Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProcess Sort . values (). join ToString ( separator Ġ= Ġ",", Ġprefix Ġ= Ġ" Valid Ġoptions Ġare : Ġ") Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" No Ġprocess Ġsort Ġmethod Ġof Ġtype Ġ{} Ġwas Ġfound . Ġ{}", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Options ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠWeb ApplicationException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format (" No Ġprocess Ġsort Ġmethod Ġof Ġtype Ġ% s Ġwas Ġfound . Ġ% s ", Ġmethod , Ġvalid Options ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Status . BAD _ REQUEST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġthe Limit Ġ= Ġlimit . orElse ( DEFAULT _ PROCESS _ LIMIT ) ĊĠĠĠĠĠĠĠ Ġif Ġ( the Limit Ġ< Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠString . format (" limit Ġcannot Ġbe Ġnegative Ġ(% d )", Ġthe Limit ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . error ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠWeb ApplicationException ( message , ĠResponse . Status . BAD _ REQUEST ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsystem Metrics . system Load ( sortBy , Ġthe Limit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GET ĊĠĠĠ Ġ@ Path (" load / history ") ĊĠĠĠ Ġfun Ġget Load History ( ĊĠĠĠĠĠĠĠ Ġ@ QueryParam (" from Date ") Ġfrom Date : ĠOffset DateTime ?, ĊĠĠĠĠĠĠĠ Ġ@ QueryParam (" toDate ") Ġto Date : ĠOffset DateTime ? ĊĠĠĠ Ġ): ĠList < System History Entry > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhistory Manager . system Load History ( from Date , Ġto Date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GET ĊĠĠĠ Ġ@ Path (" uptime ") ĊĠĠĠ Ġfun Ġget U ptime (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġu ptime Supplier . get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GET ĊĠĠĠ Ġ@ Path (" jvm ") ĊĠĠĠ Ġfun Ġget Properties (): ĠJ vm Properties Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproperties Map : ĠMutable Map < String , ĠString > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHashMap () ĊĠĠĠĠĠĠĠ Ġval Ġsystem Properties Ġ= ĠSystem . getProperties () ĊĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġsystem Properties ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperties Map [ key Ġas ĠString ] Ġ= Ġvalue Ġas ĠString ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠJ vm Properties ( properties Map ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoggerFactory . getLogger ( System Resource :: class . java ) ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ PROCESS _ LIMIT Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ PROCESS _ ORDER Ġ= ĠProcess Sort . MEMORY ĊĠĠĠ Ġ} Ċ }