package Ġde . fh do . lemma . model _ processing . code _ generation . spring cloud Ċ Ċ import Ġcom . github . jav ap ar ser . ast . Modifier Ċ import Ġcom . github . jav ap ar ser . ast . Node Ċ import Ġcom . github . jav ap ar ser . ast . body . Class Or Interface Declaration Ċ import Ġcom . github . jav ap ar ser . ast . body . Field Declaration Ċ import Ġcom . github . jav ap ar ser . ast . body . Method Declaration Ċ import Ġcom . github . jav ap ar ser . ast . expr . Name Expr Ċ import Ġcom . github . jav ap ar ser . ast . expr . Normal Annotation Expr Ċ import Ġcom . github . jav ap ar ser . ast . type . Type Ċ import Ġde . fh do . lemma . data . intermediate . Intermediate Complex Type Ċ import Ġde . fh do . lemma . data . intermediate . Intermediate Type Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . Import Target ElementType Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . Serialization Characteristic Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . add Annotation Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . add Dependencies Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . add Import Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . add Private Attribute Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . add Serialization Characteristic Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . add Statements Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . ast . getValue AsString Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . fully Qualified Class name Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . gen lets . Gen let State Access Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . languages . Type Mapping Description Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . java _ base . languages . set Java Type From Ċ import Ġde . fh do . lemma . model _ processing . code _ generation . spring cloud . languages . get Gen let Type Mapping Ċ Ċ /** Ċ Ġ* ĠHelper Ġto Ġadd Ġtype - mapping - related Ġimports Ġand Ġdependencies Ġto Ġthe Ġspecified Ġ[ target Node ] Ġbased Ġon Ġthis Ċ Ġ* Ġ[ Intermediate Type ]. Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ Fl orian ĠR ade m acher ]( mailto : fl orian . r ade m acher @ fh - d ort m und . de ) Ċ Ġ*/ Ċ internal Ġfun Ġ< P : ĠNode > ĠInter mediate Type . add Type Information To ( target Node : ĠP , ĊĠĠĠ Ġadd Import To Target Node : ĠP .( String ) Ġ-> ĠUnit ) Ġ: ĠType Mapping Description ? Ġ{ ĊĠĠĠ Ġval Ġtype Mapping Ġ= Ġget Gen let Type Mapping () Ġ?: Ġreturn Ġnull ĊĊĠĠĠ Ġval Ġ(_, Ġcomplex Type Mapping , Ġimports , Ġdependencies ) Ġ= Ġtype Mapping ĊĠĠĠ Ġimports . forEach Ġ{ Ġadd Import To Target Node ( target Node , Ġit ) Ġ} ĊĠĠĠ Ġtarget Node . add Dependencies ( dependencies ) ĊĊĠĠĠ Ġif Ġ( complexType Mapping ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Domain Package : ĠString Ġby ĠGen let State Access ĊĠĠĠĠĠĠĠ Ġval Ġfully Qualified Class name Ġ= Ġ( this Ġas ĠInter mediate Complex Type ). fully Qualified Class name ĊĠĠĠĠĠĠĠ Ġval Ġcomplex Type Fully QualifiedName Ġ= Ġ"$ current Domain Package .$ fully Qualified Class name " ĊĠĠĠĠĠĠĠ Ġadd Import To Target Node ( target Node , Ġcomplex Type Fully QualifiedName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġtype Mapping Ċ } Ċ Ċ /** Ċ Ġ* ĠHelper Ġto Ġget Ġthe ĠJava Ġtype Ġfrom Ġthis Ġ[ Intermediate Type ] Ġand Ġinvoke Ġthe Ġgiven Ġ[ add Import To Target Node ] Ġcallback Ġto Ċ Ġ* Ġdirectly Ġadd Ġrelated Ġimports Ġto Ġa Ġgenerated Ġnode . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ Fl orian ĠR ade m acher ]( mailto : fl orian . r ade m acher @ fh - d ort m und . de ) Ċ Ġ*/ Ċ internal Ġfun ĠInter mediate Type . java Type ( add Import To Target Node : Ġ( String ) Ġ-> ĠUnit ) Ġ: ĠType Ġ{ ĊĠĠĠ Ġval Ġfake Method Ġ= ĠMethod Declaration () ĊĠĠĠ Ġfake Method . set Java Type From ( this , Ġfake Method ) Ġ{ Ġadd Import To Target Node ( it ) Ġ} ĊĠĠĠ Ġreturn Ġfake Method . type Ċ } Ċ Ċ /** Ċ Ġ* ĠHelper Ġto Ġcheck Ġif Ġthis Ġ[ Normal Annotation Expr ] Ġhas Ġa Ġ[ property ] Ġwith Ġvalue Ġ[ check Value ]. Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ Fl orian ĠR ade m acher ]( mailto : fl orian . r ade m acher @ fh - d ort m und . de ) Ċ Ġ*/ Ċ internal Ġfun ĠNormal Annotation Expr . hasValue ( property : ĠString , Ġcheck Value : ĠString ) Ġ: ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġannotation Value Ġ= ĠgetValue AsString ( property ) Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġval Ġvalues Ġ= Ġparse Multi Value Annotation ( annotation Value ) Ġ?: Ġreturn Ġcheck Value Ġ== Ġannotation Value ĊĠĠĠ Ġreturn Ġcheck Value Ġin Ġvalues Ċ } Ċ Ċ /** Ċ Ġ* ĠHelper Ġto Ġparse Ġthe Ġ[ value ] Ġof Ġa Ġmulti - value Ġannotation Ġproperty . ĠThose Ġvalues Ġhave Ġthe Ġform Ċ Ġ* ĠĠĠĠĠ Ġ{" foo ", Ġ" bar "} Ġor Ġ{ foo , Ġbar } Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ Fl orian ĠR ade m acher ]( mailto : fl orian . r ade m acher @ fh - d ort m und . de ) Ċ Ġ*/ Ċ private Ġfun Ġparse Multi Value Annotation ( value : ĠString ) Ġ: ĠList < String >? Ġ{ ĊĠĠĠ Ġif Ġ(! value . startsWith ("{ ") Ġ&& Ġ! value . endsWith (" } ")) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĊĠĠĠ Ġreturn Ġvalue . trim Start ('{ '). trim End (' } '). split (",") Ċ } Ċ Ċ /** Ċ Ġ* ĠAdd Ġthe Ġspecified Ġ[ value ] Ġto Ġthe Ġproperty Ġcalled Ġ[ property ] Ġof Ġthis Ġ[ Normal Annotation Expr ]. ĠIf Ġthe Ġ[ property ] Ġis Ċ Ġ* Ġalready Ġpresent , Ġthe Ġ[ value ] Ġwill Ġbe Ġadded Ġto Ġthe Ġ[ property ] Ġin Ġthe Ġform Ġof Ġa Ġmulti - value Ġannotation Ġproperty . ĠNote , Ċ Ġ* Ġthat Ġno Ġduplicate Ġcheck Ġwill Ġbe Ġperformed . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ Fl orian ĠR ade m acher ]( mailto : fl orian . r ade m acher @ fh - d ort m und . de ) Ċ Ġ*/ Ċ internal Ġfun ĠNormal Annotation Expr . add Value ( property : ĠString , Ġvalue : ĠString ) Ġ{ ĊĠĠĠ Ġ/* ĠGet Ġand Ġparse Ġthe Ġexisting Ġvalue */ ĊĠĠĠ Ġval Ġexisting Value Ġ= ĠgetValue AsString ( property ) ĊĠĠĠ Ġval Ġexisting Multiple Values Ġ= Ġif Ġ( existing Value Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġparse Multi Value Annotation ( existing Value ) ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġnull ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠPrepare Ġthe Ġvalue Ġto Ġbe Ġadded . ĠThis Ġeither Ġextends Ġan Ġexisting Ġmulti - value Ġproperty 's Ġvalue , Ġcreates Ġa Ġnew ĊĠĠĠĠ Ġ* Ġmulti - value Ġproperty 's Ġvalue , Ġor Ġan Ġall - new Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġvalue ToAdd Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġexisting Multiple Values Ġ!= Ġnull Ġ-> Ġ" {" Ġ+ Ġexisting Multiple Values . join ToString (",") Ġ+ Ġ", Ġ$ value }" ĊĠĠĠĠĠĠĠ Ġexisting Value Ġ!= Ġnull Ġ-> Ġ" {$ existing Value , Ġ$ value }" ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠAdd Ġthe Ġprepared Ġvalue Ġto Ġthe Ġannotation Ġ*/ ĊĠĠĠ Ġval Ġexisting Pair Ġ= Ġpairs . find Ġ{ Ġit . name AsString Ġ== Ġproperty Ġ} ĊĠĠĠ Ġif Ġ( existing Pair Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġadd Pair ( property , Ġvalue ToAdd ) ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġexisting Pair . value Ġ= ĠName Expr ( value ToAdd ) Ċ } Ċ Ċ /** Ċ Ġ* ĠHelper Ġto Ġadd Ġa Ġprotected Ġmethod Ġannotated Ġwith ĠSpring 's ĠBean Ġannotation Ġto Ġthis Ġ[ Class Or Interface Declaration ]. Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ Fl orian ĠR ade m acher ]( mailto : fl orian . r ade m acher @ fh - d ort m und . de ) Ċ Ġ*/ Ċ internal Ġfun ĠClass Or Interface Declaration . add Protected Bean Method ( name : ĠString , ĠreturnType : ĠString , ĊĠĠĠ Ġparameters : ĠMap < String , ĠString > Ġ= Ġempty Map (), Ġmethod Imports : ĠSet < String > Ġ= Ġempty Set (), Ġbody : ĠString , ĊĠĠĠ Ġbody Imports : ĠSet < String > Ġ= Ġempty Set ()) Ġ: ĠMethod Declaration Ġ{ ĊĠĠĠ Ġ/* ĠAdd Ġthe Ġmethod Ġtogether Ġwith Ġthe Ġannotation Ġ*/ ĊĠĠĠ Ġval Ġbean Method Ġ= Ġadd Method ( name , ĠModifier . Keyword . PROTECT ED ) ĊĠĠĠ Ġbean Method . setType ( returnType ) ĊĠĠĠ Ġbean Method . add Import (" org . springframework . context . annotation . Bean ", ĠImport Target ElementType . AN NOT ATION , ĊĠĠĠĠĠĠĠ ĠSerialization Characteristic . D ONT _ RE LOC ATE ) ĊĠĠĠ Ġbean Method . add Annotation (" Bean ", ĠSerialization Characteristic . D ONT _ RE LOC ATE ) ĊĠĠĠ Ġbean Method . add Serialization Characteristic ( Serialization Characteristic . D ONT _ RE LOC ATE ) ĊĊĠĠĠ Ġ/* ĠAdd Ġmethod Ġparameters Ġ*/ ĊĠĠĠ Ġparameters . forEach Ġ{ Ġ( name , Ġtype ) Ġ-> Ġbean Method . add Parameter ( type , Ġname ) Ġ} ĊĊĠĠĠ Ġ/* ĠAdd Ġsignature - specific Ġimports Ġ*/ ĊĠĠĠ Ġmethod Imports . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġbean Method . add Import ( it , ĠImport Target ElementType . METHOD , ĠSerialization Characteristic . D ONT _ RE LOC ATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĠAdd Ġbody Ġand Ġbody - related Ġimports Ġ*/ ĊĠĠĠ Ġbean Method . add Statements ( body ) ĊĠĠĠ Ġbody Imports . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġbean Method . add Import ( it , ĠImport Target ElementType . METHOD _ BODY , ĠSerialization Characteristic . D ONT _ RE LOC ATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġbean Method Ċ } Ċ Ċ /** Ċ Ġ* ĠHelper Ġto Ġadd Ġa Ġprivate Ġconstant , Ġi . e ., Ġa Ġprivate Ġfinal Ġstatic Ġattribute , Ġto Ġthis Ġ[ Class Or Interface Declaration ]. Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ Fl orian ĠR ade m acher ]( mailto : fl orian . r ade m acher @ fh - d ort m und . de ) Ċ Ġ*/ Ċ internal Ġfun ĠClass Or Interface Declaration . add Private Constant ( name : ĠString , Ġtype : ĠString , Ġinitializer : ĠString Ġ? Ġ= Ġnull ) ĊĠĠĠ Ġ: ĠField Declaration Ġ{ ĊĠĠĠ Ġval Ġnew Constant Ġ= Ġadd Private Attribute ( name , Ġtype , ĠModifier . Keyword . STATIC , ĠModifier . Keyword . FINAL , ĊĠĠĠĠĠĠĠ Ġinitializer Ġ= Ġinitializer ) ĊĠĠĠ Ġnew Constant . add Serialization Characteristic ( Serialization Characteristic . D ONT _ RE LOC ATE ) ĊĠĠĠ Ġreturn Ġnew Constant Ċ }