/******************************************************************************* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGeneral ĠE lectric ĠCompany Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ************************************************************************* ******/ Ċ Ċ package Ġorg . eclipse . ket i . test . utils Ċ Ċ import Ġorg . eclipse . ket i . acs . model . Attribute Ċ import Ġorg . eclipse . ket i . acs . rest . Base Resource Ċ import Ġorg . eclipse . ket i . acs . rest . Base Subject Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . http . Http Entity Ċ import Ġorg . springframework . http . HttpHeaders Ċ import Ġorg . springframework . http . HttpMethod Ċ import Ġorg . springframework . http . Response Entity Ċ import Ġorg . springframework . security . oauth 2 . client . OAuth 2 Rest Template Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . springframework . web . client . Rest Template Ċ import Ġjava . io . Unsupported EncodingException Ċ import Ġjava . net . URI Ċ import Ġjava . net . URL Encoder Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . HashSet Ċ Ċ private Ġconst Ġval ĠALTER N ATE _ ATTRIBUTE _ VALUE Ġ= Ġ" san fr anc isco " Ċ private Ġconst Ġval ĠDEFAULT _ ATTRIBUTE _ VALUE Ġ= Ġ" san ram on " Ċ private Ġconst Ġval ĠDEFAULT _ ATTRIBUTE _ NAME Ġ= Ġ" site " Ċ private Ġconst Ġval ĠDEFAULT _ ORG _ ATTRIBUTE _ NAME Ġ= Ġ" org " Ċ private Ġconst Ġval ĠDEFAULT _ ORG _ ATTRIBUTE _ VALUE Ġ= Ġ" al liance " Ċ private Ġconst Ġval ĠALTER N ATE _ ORG _ ATTRIBUTE _ VALUE Ġ= Ġ" syn dic ate " Ċ Ċ const Ġval ĠA CS _ SUBJECT _ API _ PATH Ġ= Ġ"$ ACS _ VERSION / subject /" Ċ const Ġval ĠA CS _ RESOURCE _ API _ PATH Ġ= Ġ"$ ACS _ VERSION / resource /" Ċ const Ġval ĠDEFAULT _ SUBJECT _ ID Ġ= Ġ" any " Ċ const Ġval ĠDEFAULT _ SUBJECT _ IDENTIFIER Ġ= Ġ" any " Ċ const Ġval ĠDEFAULT _ RESOURCE _ IDENTIFIER Ġ= Ġ" any " Ċ const Ġval ĠDEFAULT _ ATTRIBUTE _ IS SU ER Ġ= Ġ" https :// acs . attributes . int " Ċ Ċ @ Component Ċ class ĠPriv ilege Helper Ġ{ ĊĊĠĠĠ Ġ@ Autowired ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġzone Factory : ĠZone Factory ĊĊĠĠĠ Ġval Ġdefault Attribute : ĠAttribute ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsite Ġ= ĠAttribute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . issuer Ġ= ĠDEFAULT _ ATTRIBUTE _ IS SU ER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . name Ġ= ĠDEFAULT _ ATTRIBUTE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . value Ġ= ĠDEFAULT _ ATTRIBUTE _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsite ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġalternate Attribute : ĠAttribute ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsite Ġ= ĠAttribute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . issuer Ġ= ĠDEFAULT _ ATTRIBUTE _ IS SU ER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . name Ġ= ĠDEFAULT _ ATTRIBUTE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . value Ġ= ĠALTER N ATE _ ATTRIBUTE _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsite ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdefault Org Attribute : ĠAttribute ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsite Ġ= ĠAttribute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . issuer Ġ= ĠDEFAULT _ ATTRIBUTE _ IS SU ER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . name Ġ= ĠDEFAULT _ ORG _ ATTRIBUTE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . value Ġ= ĠDEFAULT _ ORG _ ATTRIBUTE _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsite ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġalternate Org Attribute : ĠAttribute ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsite Ġ= ĠAttribute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . issuer Ġ= ĠDEFAULT _ ATTRIBUTE _ IS SU ER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . name Ġ= ĠDEFAULT _ ORG _ ATTRIBUTE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsite . value Ġ= ĠALTER N ATE _ ORG _ ATTRIBUTE _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsite ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Unsupported EncodingException :: class ) ĊĠĠĠ Ġfun Ġput Subject ( ĊĠĠĠĠĠĠĠ Ġac s Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġsubject : ĠBase Subject , ĊĠĠĠĠĠĠĠ Ġendpoint : ĠString ?, ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers , ĊĠĠĠĠĠĠĠ Ġvar arg Ġattributes : ĠAttribute ĊĠĠĠ Ġ): ĠBase Subject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsubject . attributes Ġ= ĠHashSet ( listOf (* attributes )) ĊĠĠĠĠĠĠĠ Ġval Ġsubject Uri Ġ= ĠURI ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create ( endpoint Ġ+ ĠA CS _ SUBJECT _ API _ PATH Ġ+ ĠURL Encoder . encode ( subject . subject Identifier !! , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠ Ġac s Template . put ( subject Uri , ĠHttp Entity ( subject , Ġheaders )) ĊĠĠĠĠĠĠĠ Ġreturn Ġsubject ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Unsupported EncodingException :: class ) ĊĠĠĠ Ġfun Ġput Subject ( ĊĠĠĠĠĠĠĠ Ġrest Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġsubject Identifier : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers , ĊĠĠĠĠĠĠĠ Ġvar arg Ġattributes : ĠAttribute ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= ĠBase Subject ( subject Identifier ) ĊĠĠĠĠĠĠĠ Ġ// Ġno Ġheader Ġneeded , Ġbecause Ġit Ġuses Ġzone Ġspecific Ġurl ĊĠĠĠĠĠĠĠ Ġput Subject ( rest Template , Ġsubject , Ġthis . zone Factory . acs Base URL , Ġheaders , Ġ* attributes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Multiple Subject s ( ĊĠĠĠĠĠĠĠ Ġac s Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġendpoint : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers , ĊĠĠĠĠĠĠĠ Ġvar arg Ġsubjects : ĠBase Subject ĊĠĠĠ Ġ): ĠResponseEntity < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsite Ġ= Ġdefault Attribute ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠHashSet < Attribute >() ĊĠĠĠĠĠĠĠ Ġattributes . add ( site ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsubjects Array Ġ= ĠArrayList < Base Subject >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġsubjects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs . attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubjects Array . add ( s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsubject Uri Ġ= ĠURI . create ( endpoint Ġ+ ĠA CS _ SUBJECT _ API _ PATH ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġac s Template . post For Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject Uri , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Entity < List < Base Subject >>( subjects Array , Ġheaders ), ĠAny :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Subject sWith Default Attributes ( ĊĠĠĠĠĠĠĠ Ġac s Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġendpoint : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers , ĊĠĠĠĠĠĠĠ Ġvar arg Ġsubjects : ĠBase Subject ĊĠĠĠ Ġ): ĠResponseEntity < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsite Ġ= Ġdefault Attribute ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠHashSet < Attribute >() ĊĠĠĠĠĠĠĠ Ġattributes . add ( site ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġsubjects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs . attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpost Subject s ( acs Template , Ġendpoint , Ġheaders , Ġ* subjects ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Subject s ( ĊĠĠĠĠĠĠĠ Ġac s Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġendpoint : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers , ĊĠĠĠĠĠĠĠ Ġvar arg Ġsubjects : ĠBase Subject ĊĠĠĠ Ġ): ĠResponseEntity < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubjects Array Ġ= ĠArrayList < Base Subject >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġsubjects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubjects Array . add ( s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsubject Uri Ġ= ĠURI . create ( endpoint Ġ+ ĠA CS _ SUBJECT _ API _ PATH ) ĊĠĠĠĠĠĠĠ Ġreturn Ġac s Template . post For Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject Uri , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Entity < List < Base Subject >>( subjects Array , Ġheaders ), ĠAny :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġput Resource ( ĊĠĠĠĠĠĠĠ Ġac s Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġresource : ĠBase Resource , ĊĠĠĠĠĠĠĠ Ġendpoint : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers , ĊĠĠĠĠĠĠĠ Ġvar arg Ġattributes : ĠAttribute ĊĠĠĠ Ġ): ĠBase Resource Ġ{ ĊĊĠĠĠĠĠĠĠ Ġresource . attributes Ġ= ĠHashSet ( listOf (* attributes )) ĊĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠURL Encoder . encode ( resource . resource Identifier !! , Ġ" UTF - 8 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠURI ( endpoint Ġ+ ĠA CS _ RESOURCE _ API _ PATH Ġ+ Ġvalue ) ĊĠĠĠĠĠĠĠ Ġac s Template . put ( uri , ĠHttp Entity ( resource , Ġheaders )) ĊĠĠĠĠĠĠĠ Ġreturn Ġresource ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Resources ( ĊĠĠĠĠĠĠĠ Ġac s Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġendpoint : ĠString , ĊĠĠĠĠĠĠĠ Ġvar arg Ġresources : ĠBase Resource ĊĠĠĠ Ġ): ĠResponseEntity < Any > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsite Ġ= Ġdefault Attribute ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠHashSet < Attribute >() ĊĠĠĠĠĠĠĠ Ġattributes . add ( site ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresources Array Ġ= ĠArrayList < Base Resource >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġresources ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr . attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources Array . add ( r ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresource Uri Ġ= ĠURI . create ( endpoint Ġ+ ĠA CS _ RESOURCE _ API _ PATH ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġac s Template . post For Entity ( resource Uri , Ġresources Array , ĠAny :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Resources WithDefault Site Attribute ( ĊĠĠĠĠĠĠĠ Ġac s Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġendpoint : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers , ĊĠĠĠĠĠĠĠ Ġvar arg Ġresources : ĠBase Resource ĊĠĠĠ Ġ): ĠResponseEntity < Any > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsite Ġ= Ġdefault Attribute ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠHashSet < Attribute >() ĊĠĠĠĠĠĠĠ Ġattributes . add ( site ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġresources ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġr . attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpost Resources ( acs Template , Ġendpoint , Ġheaders , Ġ* resources ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Resources ( ĊĠĠĠĠĠĠĠ Ġac s Template : ĠOAuth 2 Rest Template , ĊĠĠĠĠĠĠĠ Ġendpoint : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers , ĊĠĠĠĠĠĠĠ Ġvar arg Ġresources : ĠBase Resource ĊĠĠĠ Ġ): ĠResponseEntity < Any > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġresources Array Ġ= ĠArrayList < Base Resource >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( r Ġin Ġresources ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources Array . add ( r ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresource Uri Ġ= ĠURI . create ( endpoint Ġ+ ĠA CS _ RESOURCE _ API _ PATH ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġac s Template . post For Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Uri , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttp Entity < List < Base Resource >>( resources Array , Ġheaders ), ĠAny :: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġdelete Subject ( ĊĠĠĠĠĠĠĠ Ġrest Template : ĠRest Template , ĊĠĠĠĠĠĠĠ Ġac s Url : ĠString , ĊĠĠĠĠĠĠĠ Ġsubject Id : ĠString ?, ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( subject Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubject Uri Ġ= ĠURI . create ( acs Url Ġ+ ĠA CS _ SUBJECT _ API _ PATH Ġ+ ĠURL Encoder . encode ( subject Id , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrest Template . exchange ( subject Uri , ĠHttpMethod . DELETE , ĠHttp Entity < Any >( headers ), ĠString :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġdelete Resource ( ĊĠĠĠĠĠĠĠ Ġrest Template : ĠRest Template , ĊĠĠĠĠĠĠĠ Ġac s Url : ĠString , ĊĠĠĠĠĠĠĠ Ġresource Id : ĠString ?, ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresource Uri Ġ= ĠURI . create ( acs Url Ġ+ ĠA CS _ RESOURCE _ API _ PATH Ġ+ ĠURL Encoder . encode ( resourceId , Ġ" UTF - 8 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrest Template . exchange ( resource Uri , ĠHttpMethod . DELETE , ĠHttp Entity < Any >( headers ), ĠString :: class . java ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Subject ( subject Identifier : ĠString ): ĠBase Subject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= ĠBase Subject () ĊĠĠĠĠĠĠĠ Ġsubject . subject Identifier Ġ= Ġsubject Identifier ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠHashSet < Attribute >() ĊĠĠĠĠĠĠĠ Ġattributes . add ( default Attribute ) ĊĠĠĠĠĠĠĠ Ġsubject . attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠ Ġreturn Ġsubject ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Resource ( resource Identifier : ĠString ): ĠBase Resource Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= ĠBase Resource () ĊĠĠĠĠĠĠĠ Ġresource . resource Identifier Ġ= Ġresource Identifier ĊĠĠĠĠĠĠĠ Ġval Ġattributes Ġ= ĠHashSet < Attribute >() ĊĠĠĠĠĠĠĠ Ġattributes . add ( default Attribute ) ĊĠĠĠĠĠĠĠ Ġresource . attributes Ġ= Ġattributes ĊĠĠĠĠĠĠĠ Ġreturn Ġresource ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġdelete Subject s ( ĊĠĠĠĠĠĠĠ Ġrest Template : ĠRest Template , ĊĠĠĠĠĠĠĠ Ġac s Url : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubjects Ġ= Ġlist Subject s ( rest Template , Ġac s Url , Ġheaders ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( subject Ġin Ġsubjects ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Subject ( rest Template , Ġac s Url , Ġsubject . subject Identifier , Ġheaders ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlist Subject s ( ĊĠĠĠĠĠĠĠ Ġrest Template : ĠRest Template , ĊĠĠĠĠĠĠĠ Ġac s Url : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers ĊĠĠĠ Ġ): ĠArray < Base Subject > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠURI . create ( acs Url Ġ+ ĠA CS _ SUBJECT _ API _ PATH ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . exchange ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĠHttpMethod . GET , ĠHttp Entity < Any >( headers ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArray < Base Subject >:: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . body ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġfun Ġdelete Resources ( ĊĠĠĠĠĠĠĠ Ġrest Template : ĠRest Template , ĊĠĠĠĠĠĠĠ Ġac s Url : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġlist Resources ( rest Template , Ġac s Url , Ġheaders ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( resource Ġin Ġresources ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Resource ( rest Template , Ġac s Url , Ġresource . resource Identifier , Ġheaders ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlist Resources ( ĊĠĠĠĠĠĠĠ Ġrest Template : ĠRest Template , ĊĠĠĠĠĠĠĠ Ġac s Endpoint : ĠString , ĊĠĠĠĠĠĠĠ Ġheaders : ĠHttp Headers ĊĠĠĠ Ġ): ĠArray < Base Resource > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠURI . create ( acs Endpoint Ġ+ ĠA CS _ RESOURCE _ API _ PATH ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġrest Template . exchange ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĠHttpMethod . GET , ĠHttp Entity < Any >( headers ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArray < Base Resource >:: class . java ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresponse . body ĊĠĠĠ Ġ} Ċ } Ċ