Skip to content

Commit

Permalink
misc
Browse files Browse the repository at this point in the history
  • Loading branch information
jbalint committed Nov 17, 2020
1 parent a49649b commit 451c328
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 19 deletions.
2 changes: 2 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ apply plugin: 'application'
mainClassName = "com.jbalint.jora.proto.JarDirToRdf"

run {
doLast {
standardInput = System.in
args "$jardir", "$outfile"
}
}
6 changes: 3 additions & 3 deletions src/main/java/com/jbalint/jcfl/ClassFileParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,15 +107,15 @@ private static FieldOrMethodInfo parseFieldOrMethodInfo(ClassFile cf, UnsignedDa
return info;
}

public static ClassFile parser(File file) throws IOException {
return parser(new FileInputStream(file));
public static ClassFile parse(File file) throws IOException {
return parse(new FileInputStream(file));
}

/**
* Load and parse a Java class file.
*/
// alias shell='java -Xcheck:jni -esa -agentlib:yt -classpath build/classes/main java.util.prefs.Base64'
public static ClassFile parser(InputStream fileInputStream) throws IOException {
public static ClassFile parse(InputStream fileInputStream) throws IOException {
ClassFile cf = new ClassFile();
try (UnsignedDataInputStream is = new UnsignedDataInputStream(fileInputStream)) {
cf.magic = is.readInt();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
/**
* Serialize a (parsed) Class to RDF
*/
public class ClassToRdf {
public class ClassFileToRdf {

static IRI methodIri(String className, String methodName, String methodSignature) {
return JcflVocab.JAVAP(className + "." + methodName + methodSignature.replaceAll("/", "."));
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/jbalint/jora/proto/JarDirToRdf.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ static Set<Statement> jarToRdf(File rawFile) {
continue;
}
InputStream is = f.getInputStream(e);
ClassFile cf = ClassFileParser.parser(is);
ClassToRdf.toRdf(model, cf);
ClassFile cf = ClassFileParser.parse(is);
ClassFileToRdf.toRdf(model, cf);
}

return model;
Expand All @@ -57,7 +57,7 @@ public static void main(String args[]) throws IOException {
.depthFirstPostOrder(dir))
.filter(f -> f.isFile() && f.getName().endsWith(".jar"))
.map(JarDirToRdf::jarToRdf)
.forEach(m -> ClassToRdf.writeTurtleString(m, fos));
.forEach(m -> ClassFileToRdf.writeTurtleString(m, fos));

fos.close();
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/jbalint/jora/proto/JarToRdf.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@ public static void main(String args[]) throws IOException {
continue;
}
InputStream is = f.getInputStream(e);
ClassFile cf = ClassFileParser.parser(is);
ClassToRdf.toRdf(model, cf);
ClassFile cf = ClassFileParser.parse(is);
ClassFileToRdf.toRdf(model, cf);
}

String outfile = "output/" + new java.io.File(args[0]).getName() + ".javap.ttl";
FileOutputStream fos = new FileOutputStream(outfile);
ClassToRdf.writeTurtleString(model, fos);
ClassFileToRdf.writeTurtleString(model, fos);
fos.close();
}
}
12 changes: 9 additions & 3 deletions src/main/java/com/jbalint/jora/proto/SerializeAttributes.java
Original file line number Diff line number Diff line change
Expand Up @@ -92,16 +92,22 @@ private void addElementValue(Resource subject, RuntimeAnnotation.ElementValue el
switch (elementValue.valueType) {
case ConstantValue:
// TODO :
throw new UnsupportedOperationException();
System.err.println("Ignoring " + subject + " " + elementValue);
// throw new UnsupportedOperationException();
break;
case ClassName:
mModel.add(Values.statement(subject, JcflVocab.JAVAP("hasClass"), JcflVocab.classIri(elementValue.className)));
break;
case EnumConstant:
// TODO :
throw new UnsupportedOperationException();
System.err.println("Ignoring " + subject + " " + elementValue);
// throw new UnsupportedOperationException();
break;
case Annotation:
// TODO :
throw new UnsupportedOperationException();
System.err.println("Ignoring " + subject + " " + elementValue);
// throw new UnsupportedOperationException();
break;
case Array:
BNode array = Values.bnode();
mModel.add(Values.statement(subject, JcflVocab.JAVAP("hasArrayValue"), array));
Expand Down
14 changes: 14 additions & 0 deletions src/test/java/com/jbalint/jcfl/ParseClassFile.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.jbalint.jcfl;

import java.io.File;

/**
* Utility to parse a class file
*/
public class ParseClassFile {

public static void main(String args[]) throws Exception {
ClassFile parse = ClassFileParser.parse(new File(args[0]));
System.err.println(parse);
}
}
10 changes: 4 additions & 6 deletions src/test/java/com/jbalint/jcfl/UnreachableTestsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,8 @@

import com.google.common.base.Charsets;
import com.google.common.collect.Sets;
import com.google.common.io.CharSource;
import com.google.common.io.CharStreams;
import com.google.common.io.Files;
import com.jbalint.jora.proto.ClassToRdf;
import com.jbalint.jora.proto.ClassFileToRdf;
import org.junit.Test;

import static org.junit.Assert.assertEquals;
Expand Down Expand Up @@ -49,9 +47,9 @@ public void findReachableTests() throws IOException {
File dir = new File("out/test/jcfl/com/jbalint/jcfl/testcode");
conn.begin();
for (File file : dir.listFiles()) {
ClassFile cf = ClassFileParser.parser(file);
conn.add().graph(ClassToRdf.toRdf(cf));
ClassToRdf.writeTurtleString(ClassToRdf.toRdf(cf), System.err);
ClassFile cf = ClassFileParser.parse(file);
conn.add().graph(ClassFileToRdf.toRdf(cf));
ClassFileToRdf.writeTurtleString(ClassFileToRdf.toRdf(cf), System.err);
}
conn.commit();

Expand Down

0 comments on commit 451c328

Please sign in to comment.