I tried to insert statements in a method but I can not put the statement in a specific place of the method, someone could help me ?
My input class :
public class prova {
public void test1(){
String test1 ="";
test1.concat("test");
// **** INJECTION *** ///
test1.concat("test");
test1.concat("test");
}
public void test2(){
String test1 ="";
test1.concat("test");
// **** INJECTION *** ///
test1.concat("test");
test1.concat("test");
}
}
And my ouput class should be :
public class prova {
public void test1(){
String test1 ="";
test1.concat("test");
String test2 = "";
test1.concat("test");
test1.concat("test");
}
public void test2(){
String test1 ="";
test1.concat("test");
String test2 = "";
test1.concat("test");
test1.concat("test");
}
}
My ATL trasformation :
module test;
create OUT : java from IN : java;
rule createStatement2 {
from
imd : java!MethodDeclaration(
imd.name = 'test1'
)
to
do{
imd.body.statements <- imd.body.statements -> insertAt(3,thisModule.createFirstStatement(imd));
}
}
rule createFirstStatement( cu:java!CompilationUnit) {
to
newStatement_1_VarDeclarationStat: java!VariableDeclarationStatement (
originalCompilationUnit <- cu.originalCompilationUnit,
type <- newStatement_1_TypeAccess_2,
fragments <- newStatement_1_VariableDeclFragm
)
,newStatement_1_TypeAccess: java!TypeAccess (
type <- java!ClassDeclaration.allInstances() -> select(e | e.name =
'String') -> first()
),
newStatement_1_TypeAccess_2: java!TypeAccess (
type <- java!ClassDeclaration.allInstances() -> select(e | e.name =
'String') -> first()
),
newStatement_1_VariableDeclFragm: java!VariableDeclarationFragment (
name <- 'sbQuery',
originalCompilationUnit <- cu.originalCompilationUnit,
variablesContainer <- newStatement_1_VarDeclarationStat,
initializer <- newStatement_1_ClassInstanceCreat
),
newStatement_1_ClassInstanceCreat: java!ClassInstanceCreation (
originalCompilationUnit <- cu.originalCompilationUnit,
method <- java!ConstructorDeclaration.allInstances() -> select(e | e.name =
'String') -> first(),
type <- newStatement_1_TypeAccess
)
do {
newStatement_1_VarDeclarationStat;
}
}
[Updated on: Sat, 09 June 2012 14:24]
Report message to a moderator