Skip to content

Commit

Permalink
parser added
Browse files Browse the repository at this point in the history
  • Loading branch information
hakdogan committed Mar 31, 2024
1 parent 62e2120 commit f603f59
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
20 changes: 20 additions & 0 deletions src/main/java/org/jugistanbul/Info.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.jugistanbul;

/**
* @author hakdogan (huseyin.akdogan@patikaglobal.com)
* Created on 31.03.2024
***/
public enum Info {

CLASS_NAME("HelloJEP457");

private String className;

Info(String className){
this.className = className;
}

public String getClassName() {
return className;
}
}
38 changes: 38 additions & 0 deletions src/main/java/org/jugistanbul/ParseClass.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.jugistanbul;

import java.io.File;
import java.io.IOException;
import java.lang.classfile.ClassFile;
import java.lang.classfile.FieldModel;
import java.lang.classfile.MethodModel;
import java.nio.file.Files;

/**
* @author hakdogan (huseyin.akdogan@patikaglobal.com)
* Created on 31.03.2024
***/
public class ParseClass {

public static void main(String[] args) {

var classModel = ClassFile.of().parse(getGivenClassBytes(Info.CLASS_NAME.getClassName()));
for (var classElement : classModel) {
switch (classElement) {
case MethodModel mm -> System.out.printf("Method name %s type %s%n", mm.methodName().stringValue(), mm.methodType().stringValue());
case FieldModel fm -> System.out.printf("Field name %s type %s%n", fm.fieldName().stringValue(), fm.fieldType().stringValue());
default -> {
}
}
}
}

private static byte[] getGivenClassBytes(final String className) {
try {
var path = STR."\{System.getProperty("user.dir")}/\{className}.class";
File file = new File(path);
return Files.readAllBytes(file.toPath());
} catch (IOException ioe){
throw new RuntimeException(ioe.getMessage());
}
}
}

0 comments on commit f603f59

Please sign in to comment.