Skip to content

Commit a6bed63

Browse files
committed
Refactoring: Move JavaKernel init logic from constructor to Builder #82
1 parent 01562ff commit a6bed63

13 files changed

Lines changed: 231 additions & 128 deletions

RELEASE-NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- #79 Remove unused magics
1010
- #80 Magics as interfaces
1111
- #81 Refactoring: JavaKernel must manage JShell
12+
- #82 Refactoring: Move JavaKernel init logic from constructor to Builder
1213

1314

1415
## 1.0-a5

jjava/src/main/java/org/dflib/jjava/JJava.java

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@
55
import org.dflib.jjava.jupyter.channels.JupyterConnection;
66
import org.dflib.jjava.jupyter.channels.JupyterSocket;
77
import org.dflib.jjava.jupyter.kernel.KernelConnectionProperties;
8+
import org.dflib.jjava.magics.ClasspathMagic;
9+
import org.dflib.jjava.magics.JarsMagic;
10+
import org.dflib.jjava.magics.LoadCodeMagic;
11+
import org.dflib.jjava.magics.LoadFromPomCellMagic;
12+
import org.dflib.jjava.magics.LoadFromPomLineMagic;
13+
import org.dflib.jjava.magics.MavenMagic;
14+
import org.dflib.jjava.magics.MavenRepoMagic;
15+
import org.dflib.jjava.maven.MavenDependencyResolver;
816

917
import java.io.IOException;
1018
import java.io.InputStreamReader;
@@ -21,28 +29,41 @@ public class JJava {
2129

2230
private static final String KERNEL_METADATA_FILE = "jjava-kernel-metadata.json";
2331

24-
private static JavaKernel kernel;
32+
private static JJavaKernel kernel;
2533

2634
public static void main(String[] args) throws Exception {
2735
if (args.length < 1) {
2836
throw new IllegalArgumentException("Missing connection file argument");
2937
}
3038

31-
String version = loadKernelVersion();
32-
3339
Path connectionFile = Paths.get(args[0]);
3440
if (!Files.isRegularFile(connectionFile)) {
3541
throw new IllegalArgumentException("Connection file '" + connectionFile + "' isn't a file.");
3642
}
3743

38-
String contents = new String(Files.readAllBytes(connectionFile));
44+
String contents = Files.readString(connectionFile);
3945

4046
JupyterSocket.JUPYTER_LOGGER.setLevel(Level.WARNING);
4147

4248
KernelConnectionProperties connProps = KernelConnectionProperties.parse(contents);
4349
JupyterConnection connection = new JupyterConnection(connProps);
4450

45-
kernel = new JavaKernel(version);
51+
MavenDependencyResolver mavenResolver = new MavenDependencyResolver();
52+
53+
kernel = JJavaKernel.builder()
54+
.version(loadKernelVersion())
55+
56+
.lineMagic("load", new LoadCodeMagic("", ".jsh", ".jshell", ".java", ".jjava"))
57+
.lineMagic("classpath", new ClasspathMagic())
58+
.lineMagic("maven", new MavenMagic(mavenResolver))
59+
.lineMagic("mavenRepo", new MavenRepoMagic(mavenResolver))
60+
.lineMagic("loadFromPOM", new LoadFromPomLineMagic(mavenResolver))
61+
.lineMagic("jars", new JarsMagic()) // TODO: deprecate redundant "jars" alias; "classpath" is a superset of this
62+
.lineMagic("addMavenDependency", new MavenMagic(mavenResolver)) // TODO: deprecate redundant "addMavenDependency" alias
63+
.cellMagic("loadFromPOM", new LoadFromPomCellMagic(mavenResolver))
64+
65+
.build();
66+
4667
kernel.becomeHandlerForConnection(connection);
4768

4869
connection.connect();
@@ -52,7 +73,7 @@ public static void main(String[] args) throws Exception {
5273
/**
5374
* Returns the kernel instance created in {@link #main(String[])}.
5475
*/
55-
public static JavaKernel getKernelInstance() {
76+
public static JJavaKernel getKernelInstance() {
5677
return JJava.kernel;
5778
}
5879

0 commit comments

Comments
 (0)