From fe4520a1d4b73f265d937b8c912256804f01f3cd Mon Sep 17 00:00:00 2001 From: SpencerPark Date: Sat, 7 Oct 2017 00:52:09 -0400 Subject: [PATCH] Set up correct project name and package. Fixed kernel banner to be more helpful in displaying kernel info --- build.gradle | 5 ++-- settings.gradle | 2 +- .../github/spencerpark/{ => ijava}/IJava.java | 25 ++++++++++++++++++- .../spencerpark/{ => ijava}/JavaKernel.java | 14 ++++++++--- .../{ => ijava}/LazyOutputStreamDelegate.java | 2 +- src/main/resources/kernel-metadata.json | 4 +++ 6 files changed, 44 insertions(+), 8 deletions(-) rename src/main/java/io/github/spencerpark/{ => ijava}/IJava.java (75%) rename src/main/java/io/github/spencerpark/{ => ijava}/JavaKernel.java (92%) rename src/main/java/io/github/spencerpark/{ => ijava}/LazyOutputStreamDelegate.java (98%) create mode 100644 src/main/resources/kernel-metadata.json diff --git a/build.gradle b/build.gradle index 35788fb..df4e944 100644 --- a/build.gradle +++ b/build.gradle @@ -26,6 +26,7 @@ task wrapper(type: Wrapper) { license { header = file('LICENSE') + exclude '**/*.json' mapping { // Use a regular multiline comment rather than a javadoc comment java = 'SLASHSTAR_STYLE' @@ -50,7 +51,7 @@ repositories { } dependencies { - shade group: 'io.github.spencerpark', name: 'jupyter-jvm-basekernel', version: '1.0.5-SNAPSHOT' + shade group: 'io.github.spencerpark', name: 'jupyter-jvm-basekernel', version: '1.0.6-SNAPSHOT' testCompile group: 'junit', name: 'junit', version: '4.12' } @@ -61,7 +62,7 @@ jar { .collect {it.isDirectory() ? it : zipTree(it)} manifest { - attributes('Main-class': 'io.github.spencerpark.IJava') + attributes('Main-class': 'io.github.spencerpark.ijava.IJava') } } diff --git a/settings.gradle b/settings.gradle index 93b3b12..95acee6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -rootProject.name = 'jupyter-java-kernel' \ No newline at end of file +rootProject.name = 'ijava' \ No newline at end of file diff --git a/src/main/java/io/github/spencerpark/IJava.java b/src/main/java/io/github/spencerpark/ijava/IJava.java similarity index 75% rename from src/main/java/io/github/spencerpark/IJava.java rename to src/main/java/io/github/spencerpark/ijava/IJava.java index 5f5d9a1..76910bf 100644 --- a/src/main/java/io/github/spencerpark/IJava.java +++ b/src/main/java/io/github/spencerpark/ijava/IJava.java @@ -21,18 +21,41 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package io.github.spencerpark; +package io.github.spencerpark.ijava; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; import io.github.spencerpark.jupyter.channels.JupyterConnection; import io.github.spencerpark.jupyter.channels.JupyterSocket; import io.github.spencerpark.jupyter.kernel.KernelConnectionProperties; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.logging.Level; public class IJava { + public static final String VERSION; + + static { + InputStream metaStream = IJava.class.getClassLoader().getResourceAsStream("kernel-metadata.json"); + Reader metaReader = new InputStreamReader(metaStream); + try { + JsonElement meta = new JsonParser().parse(metaReader); + VERSION = meta.getAsJsonObject().get("version").getAsString(); + } finally { + try { + metaReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + public static void main(String[] args) throws Exception { if (args.length < 1) throw new IllegalArgumentException("Missing connection file argument"); diff --git a/src/main/java/io/github/spencerpark/JavaKernel.java b/src/main/java/io/github/spencerpark/ijava/JavaKernel.java similarity index 92% rename from src/main/java/io/github/spencerpark/JavaKernel.java rename to src/main/java/io/github/spencerpark/ijava/JavaKernel.java index 56c0f38..2862906 100644 --- a/src/main/java/io/github/spencerpark/JavaKernel.java +++ b/src/main/java/io/github/spencerpark/ijava/JavaKernel.java @@ -21,12 +21,13 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package io.github.spencerpark; +package io.github.spencerpark.ijava; import io.github.spencerpark.jupyter.kernel.BaseKernel; import io.github.spencerpark.jupyter.kernel.LanguageInfo; import io.github.spencerpark.jupyter.kernel.ReplacementOptions; import io.github.spencerpark.jupyter.kernel.util.CharPredicate; +import io.github.spencerpark.jupyter.messages.Header; import io.github.spencerpark.jupyter.messages.MIMEBundle; import jdk.jshell.*; @@ -67,9 +68,16 @@ public JavaKernel() { .pygments("java") .codemirror("java") .build(); - this.banner = String.format("Java %s", Runtime.version()); + this.banner = String.format("Java %s :: IJava kernel %s \nProtocol v%s implementation by %s %s", + Runtime.version().toString(), + IJava.VERSION, + Header.PROTOCOL_VERISON, + KERNEL_META.getOrDefault("project", "UNKNOWN"), + KERNEL_META.getOrDefault("version", "UNKNOWN") + ); this.helpLinks = List.of( - new LanguageInfo.Help("Java", "https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html") + new LanguageInfo.Help("Java tutorial", "https://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html"), + new LanguageInfo.Help("IJava homepage", "https://github.com/SpencerPark/IJava") ); } diff --git a/src/main/java/io/github/spencerpark/LazyOutputStreamDelegate.java b/src/main/java/io/github/spencerpark/ijava/LazyOutputStreamDelegate.java similarity index 98% rename from src/main/java/io/github/spencerpark/LazyOutputStreamDelegate.java rename to src/main/java/io/github/spencerpark/ijava/LazyOutputStreamDelegate.java index 0285c0f..0fc951e 100644 --- a/src/main/java/io/github/spencerpark/LazyOutputStreamDelegate.java +++ b/src/main/java/io/github/spencerpark/ijava/LazyOutputStreamDelegate.java @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package io.github.spencerpark; +package io.github.spencerpark.ijava; import java.io.IOException; import java.io.OutputStream; diff --git a/src/main/resources/kernel-metadata.json b/src/main/resources/kernel-metadata.json new file mode 100644 index 0000000..f200f68 --- /dev/null +++ b/src/main/resources/kernel-metadata.json @@ -0,0 +1,4 @@ +{ + "version": "@version@", + "project": "@project@" +} \ No newline at end of file