package org.smoothbuild.builtin.java.javac;
import static org.smoothbuild.builtin.java.util.JavaNaming.binaryNameToPackage;
import static org.smoothbuild.builtin.java.util.JavaNaming.toBinaryName;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.util.Objects;
import javax.tools.SimpleJavaFileObject;
import org.smoothbuild.lang.value.SFile;
public class InputClassFile extends SimpleJavaFileObject {
private final SFile file;
private final String binaryName;
private final String aPackage;
public InputClassFile(SFile file) {
super(URI.create("jar:///" + ":" + file.path().value()), Kind.CLASS);
if (!file.path().value().endsWith(Kind.CLASS.extension)) {
throw new IllegalArgumentException();
}
this.file = file;
this.binaryName = toBinaryName(file.path().value());
this.aPackage = binaryNameToPackage(binaryName);
}
public String binaryName() {
return binaryName;
}
public String aPackage() {
return aPackage;
}
public InputStream openInputStream() throws IOException {
return file.content().openInputStream();
}
public boolean equals(Object object) {
return object instanceof InputClassFile && equals((InputClassFile) object);
}
private boolean equals(InputClassFile inputClassFile) {
return Objects.equals(file.path(), inputClassFile.file.path());
}
public int hashCode() {
return file.path().hashCode();
}
}