How to read method parameters from a method call defined in a .java file? -


i want read parameters passed particular method of java class. here java file:

package config;  public class abc extends lineavailabilitynew {  public abc(message msg)     throws messagehandlerexcection {     super(msg); }  public void domessagedataoverrides()     throws messagehandlerexcection {     super.domessagedataoverrides();     setworkinglineqty("21");     setstoppedlineqty("10");     setworkinglineexchangegroupcode("gol");     setworkinglinewithserviceid("01014013024", "24", "mpf", "n", "n", "a line in e2e", "", "nte", "gol", "", "standard", "");     setonemoreworkinglinewithserviceid("01014013025", "25", "mpf", "n", "n", "a line in e2e", "", "nte", "gol", "", "standard", "");     setonemoreworkinglinewithserviceid("01014013026", "26", "mpf", "n", "n", "a line in e2e", "", "nte", "gol", "", "standard", "");     setonemorestoppedlinewithserviceid("01014013015", "15", "pstn single line", "n", "n", "", "nte", "gol", "", "standard", "");  } } 

here want parameter values supplied setworkinglinewithserviceid();

 output should this:  1> "01014013024", "24", "mpf", "n", "n", "a line in e2e", "", "nte", "gol", "", "standard", ""  2> "01014013026", "26", "mpf", "n", "n", "a line in e2e", "", "nte", "gol", "", "standard", "" 

i not aware of apis used reading .java files java code. project constraint use java 5

you can use javaparser

maven dependency

<dependency>     <groupid>com.google.code.javaparser</groupid>     <artifactid>javaparser</artifactid>     <version>1.0.8</version> </dependency> 

parser:

import japa.parser.javaparser; import japa.parser.ast.compilationunit; import japa.parser.ast.body.bodydeclaration; import japa.parser.ast.body.methoddeclaration; import japa.parser.ast.body.typedeclaration; import japa.parser.ast.expr.methodcallexpr; import japa.parser.ast.stmt.blockstmt; import japa.parser.ast.visitor.genericvisitoradapter;  import java.io.inputstream; import java.util.list;  public class app {      public static void main(string[] args) throws exception {          // creates input stream file parsed         inputstream in = app.class.getresourceasstream("abc.java");         // if want use absolute path try         // inputstream in = fileinputstream("/path/to/file/abc.java");           compilationunit cu;         try {             // parse file             cu = javaparser.parse(in);         } {             in.close();         }          // prints resulting compilation unit default system output         visit(cu);     }      private static void visit(compilationunit cu) {         list<typedeclaration> types = cu.gettypes();         (typedeclaration type : types) {             list<bodydeclaration> members = type.getmembers();             (bodydeclaration member : members) {                 if (member instanceof methoddeclaration) {                     methoddeclaration method = (methoddeclaration) member;                     if ("domessagedataoverrides".equals(method.getname())) {                         blockstmt body = method.getbody();                         body.accept(new myvisitor(), null);                     }                 }             }         }     }      private static class myvisitor extends genericvisitoradapter {         public object visit(methodcallexpr n, object arg) {             if ("setonemoreworkinglinewithserviceid".equals(n.getname())){                 system.out.println(n.getargs());             }             return super.visit(n, arg);         }     }  } 

output:

--- update ---

project files:

1) maven project. abc.java file should in src/main/resources folder. if want use absolute path try fileinputstream below.

inputstream in = fileinputstream("/path/to/file/abc.java"); 

2) n.getargs() java.util.list. can per argument. try new myvisitor.

private static class myvisitor extends genericvisitoradapter {     public object visit(methodcallexpr n, object arg) {         if ("setonemoreworkinglinewithserviceid".equals(n.getname())){             (expression expression : n.getargs()) {                 system.out.println(expression.tostring());             }         }         return super.visit(n, arg);     } } 

Comments

Popular posts from this blog

java - Intellij Synchronizing output directories .. -

git - Initial Commit: "fatal: could not create leading directories of ..." -