diff --git a/JNI/build.sh b/JNI/build.sh new file mode 100755 index 0000000..282d3bb --- /dev/null +++ b/JNI/build.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -e +gcc -fPIC -shared \ + -I"$JAVA_HOME/include" \ + -I"$JAVA_HOME/include/linux" \ + -o libbtcjni.so native_impl.c +echo "Built libbtcjni.so" + diff --git a/JNI/libbtcjni.so b/JNI/libbtcjni.so new file mode 100755 index 0000000..df4c67c Binary files /dev/null and b/JNI/libbtcjni.so differ diff --git a/JNI/native_impl.c b/JNI/native_impl.c new file mode 100644 index 0000000..557ca00 --- /dev/null +++ b/JNI/native_impl.c @@ -0,0 +1,28 @@ +//native_impl.c + +#include +#include +#include + +// JNI functions for com.example.cezenBTC.service.NativeBridge + +JNIEXPORT jstring JNICALL +Java_com_example_cezenBTC_service_NativeBridge_hello(JNIEnv *env, jclass clazz, jstring jname) { + (void)clazz; // unused + const char *name = jname ? (*env)->GetStringUTFChars(env, jname, NULL) : "World"; + + char buf[256]; + snprintf(buf, sizeof(buf), "Hello from JNI, %s!", (name && *name) ? name : "World"); + + if (jname) { + (*env)->ReleaseStringUTFChars(env, jname, name); + } + return (*env)->NewStringUTF(env, buf); +} + +JNIEXPORT jint JNICALL +Java_com_example_cezenBTC_service_NativeBridge_add(JNIEnv *env, jclass clazz, jint a, jint b) { + (void)env; (void)clazz; + return a + b; +} + diff --git a/springHorse/src/main/java/com/example/cezenBTC/config/CezenRoutsSecurityChain.java b/springHorse/src/main/java/com/example/cezenBTC/config/CezenRoutsSecurityChain.java index 36d8396..7856f1d 100755 --- a/springHorse/src/main/java/com/example/cezenBTC/config/CezenRoutsSecurityChain.java +++ b/springHorse/src/main/java/com/example/cezenBTC/config/CezenRoutsSecurityChain.java @@ -109,6 +109,7 @@ public class CezenRoutsSecurityChain { "/btc/get_races_by_venue_id", "/btc/get_all_races_by_today", "/btc/get_race_card", + "/btc/tester", "/cezen/set_aors", "/cezen/set_password", "/cezen/add_extension" diff --git a/springHorse/src/main/java/com/example/cezenBTC/controller/BtcOperations.java b/springHorse/src/main/java/com/example/cezenBTC/controller/BtcOperations.java index 954ecd2..ed4b9cc 100644 --- a/springHorse/src/main/java/com/example/cezenBTC/controller/BtcOperations.java +++ b/springHorse/src/main/java/com/example/cezenBTC/controller/BtcOperations.java @@ -47,4 +47,10 @@ public class BtcOperations { return this.btcRaceService.getRaceCard(LocalDate.now()); } + + @GetMapping("/tester") + public ResponseEntity testData(){ + + return this.btcRaceService.testConnection(); + } } diff --git a/springHorse/src/main/java/com/example/cezenBTC/service/BtcRaceService.java b/springHorse/src/main/java/com/example/cezenBTC/service/BtcRaceService.java index 0cc8233..d545a9a 100644 --- a/springHorse/src/main/java/com/example/cezenBTC/service/BtcRaceService.java +++ b/springHorse/src/main/java/com/example/cezenBTC/service/BtcRaceService.java @@ -114,4 +114,13 @@ public class BtcRaceService { return ResponseEntity.status(200).body(raceCard); } + + // this is a JNI test to spring + public ResponseEntity testConnection(){ + + //jni logic here + String msg = NativeBridge.hello("Spring"); + int sum = NativeBridge.add(21, 21); + return ResponseEntity.ok(msg + " | add(21,21)=" + sum); + } } diff --git a/springHorse/src/main/java/com/example/cezenBTC/service/NativeBridge.java b/springHorse/src/main/java/com/example/cezenBTC/service/NativeBridge.java new file mode 100644 index 0000000..a097d48 --- /dev/null +++ b/springHorse/src/main/java/com/example/cezenBTC/service/NativeBridge.java @@ -0,0 +1,14 @@ +package com.example.cezenBTC.service; + +public final class NativeBridge { + public static native String hello(String name); + public static native int add(int a, int b); + + static { + // ABSOLUTE PATH to the generated library + // Linux: libbtcjni.so, macOS: libbtcjni.dylib, Windows: btcjni.dll + System.load("/home/mathew/Desktop/dev/horse/JNI_spring/btc_horse/JNI/libbtcjni.so"); // <-- change this to the real path + } + + private NativeBridge() {} +} \ No newline at end of file