SLIDE 12 Refactoring in Clone Ranges
12
1 2 4 5 pr ot e c t e d St r i ng ge t Va l ue ( St r i ng na m e , St r i ng va l ue ) { 1 2 4 5 i f ( va l ue . s t a r t s W i t h( " ${" ) & & va l ue . e nds W i t h( " }" ) ) { 1 2 3 4 5 - t r y { 1 2 3 4 5 - St r i ng pr ope r t yNa m e = va l ue . s ubs t r i ng( 2, va l ue . l e ngt h( ) - 1) ; 1 2 3 4 5 - Obj e c t Na m e pr ope r t ySe r vi c e ON = ne w Obj e c t Na m e ( “ . . . " ) ; 1 2 3 4 5 - Ke r ne l Abs t r a c t i on ke r ne l Abs t r a c t i on = Ke r ne l Abs t r a c t i onFa c t or y. ge t I ns t a nc e ( ) ; 1 2 3 4 5 - St r i ng pr ope r t yVa l ue = ( St r i ng) ke r ne l Abs t r a c t i on. i nvoke ( . . . ) ; 1 2 3 5 - l og. de bug( " Re pl a c e d e j b- j a r . xm l e l e m e nt " + na m e + " wi t h va l ue " + pr ope r t yVa l ue ) ; 1 2 3 5 - r e t ur n pr ope r t yVa l ue ; 1 2 3 5 - } c a t c h ( Exc e pt i on e ) { 1 2 3 5 - l og. wa r n( " Una bl e t o l ook up pr ope r t y s e r vi c e f or e j b- j a r . xm l e l e m e nt " + . . . ) ; 1 2 3 5 - } + St r i ng r e pl a c e m e nt = St r i ngPr ope r t yRe pl a c e r . r e pl a c e Pr ope r t i e s ( va l ue ) ; + i f ( r e pl a c e m e nt ! = nul l ) + va l ue = r e pl a c e m e nt ; 1 2 5 } 1 2 5 r e t ur n va l ue ; 1 2 5 } i f ( e dge i ns t a nc e of M Tr a ns i t i on) { M Tr a ns i t i on t r = ( M Tr a ns i t i on) e dge ;
t r Fi g = ne w Fi gTr a ns ( t r ) ;
- / / s e t s our c e a nd de s t
- / / s e t a ny a r r owhe a ds , l a be l s , or c ol or s
- M
St a t e Ve r t e x s our c e SV = t r . ge t Sour c e ( ) ;
St a t e Ve r t e x de s t SV = t r . ge t Ta r ge t ( ) ;
- Fi gNode s our c e FN = ( Fi gNode ) l a y. . .
- Fi gNode de s t FN = ( Fi gNode ) l a y. . .
- t r Fi g. s e t Sour c e Por t Fi g( s our c e FN) ;
- t r Fi g. s e t Sour c e Fi gNode ( s our c e FN) ;
- t r Fi g. s e t De s t Por t Fi g( de s t FN) ;
- t r Fi g. s e t De s t Fi gNode ( de s t FN) ;
+ Fi gTr a ns t r Fi g = ne w Fi gTr a ns ( t r , l a y) ; r e t ur n t r Fi g; }
Refactoring performed on
clone range
Sub-clone refactoring