Skip to content

Commit b5b1635

Browse files
committed
Fix initialization of java and native instances
1 parent b60f8a2 commit b5b1635

File tree

12 files changed

+75
-78
lines changed

12 files changed

+75
-78
lines changed

arpack/src/main/java/dev/ludovic/netlib/arpack/ARPACK.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
public interface ARPACK {
2929

3030
public static ARPACK getInstance() {
31-
return InstanceBuilder.getInstance();
31+
return InstanceBuilder.arpack();
3232
}
3333

3434
public void dmout(int lout, int m, int n, double[] a, int lda, int idigit, String ifmt);

arpack/src/main/java/dev/ludovic/netlib/arpack/InstanceBuilder.java

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,43 +31,41 @@ final class InstanceBuilder {
3131

3232
private static final Logger log = Logger.getLogger(InstanceBuilder.class.getName());
3333

34-
private static final ARPACK arpack = getInstanceImpl();
34+
private static final ARPACK arpack;
35+
private static final NativeARPACK nativeArpack;
36+
private static final JavaARPACK javaArpack;
3537

36-
public static ARPACK getInstance() {
37-
return arpack;
38-
}
39-
40-
private static ARPACK getInstanceImpl() {
41-
try {
42-
return NativeARPACK.getInstance();
43-
} catch (Throwable t) {
44-
log.warning("Failed to load implementation from:" + NativeARPACK.class.getName());
45-
}
46-
return JavaARPACK.getInstance();
38+
static {
39+
nativeArpack = initializeNative();
40+
javaArpack = initializeJava();
41+
arpack = nativeArpack != null ? nativeArpack : javaArpack;
4742
}
4843

49-
private static final NativeARPACK nativeArpack = getNativeInstanceImpl();
50-
51-
public static NativeARPACK getNativeInstance() {
52-
return nativeArpack;
44+
public static ARPACK arpack() {
45+
return arpack;
5346
}
5447

55-
private static NativeARPACK getNativeInstanceImpl() {
48+
private static NativeARPACK initializeNative() {
5649
try {
5750
return JNIARPACK.getInstance();
5851
} catch (Throwable t) {
5952
log.warning("Failed to load implementation from:" + JNIARPACK.class.getName());
53+
return null;
6054
}
61-
throw new RuntimeException("Unable to load native implementation");
6255
}
6356

64-
private static final JavaARPACK javaArpack = getJavaInstanceImpl();
65-
66-
public static JavaARPACK getJavaInstance() {
67-
return javaArpack;
57+
public static NativeARPACK nativeArpack() {
58+
if (nativeArpack == null) {
59+
throw new RuntimeException("Unable to load native implementation");
60+
}
61+
return nativeArpack;
6862
}
6963

70-
private static JavaARPACK getJavaInstanceImpl() {
64+
private static JavaARPACK initializeJava() {
7165
return F2jARPACK.getInstance();
7266
}
67+
68+
public static JavaARPACK javaArpack() {
69+
return javaArpack;
70+
}
7371
}

arpack/src/main/java/dev/ludovic/netlib/arpack/JavaARPACK.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828
public interface JavaARPACK extends ARPACK {
2929

3030
public static JavaARPACK getInstance() {
31-
return InstanceBuilder.getJavaInstance();
31+
return InstanceBuilder.javaArpack();
3232
}
3333
}

arpack/src/main/java/dev/ludovic/netlib/arpack/NativeARPACK.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828
public interface NativeARPACK extends ARPACK {
2929

3030
public static NativeARPACK getInstance() {
31-
return InstanceBuilder.getNativeInstance();
31+
return InstanceBuilder.nativeArpack();
3232
}
3333
}

blas/src/main/java/dev/ludovic/netlib/blas/BLAS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
public interface BLAS {
2929

3030
public static BLAS getInstance() {
31-
return InstanceBuilder.getInstance();
31+
return InstanceBuilder.blas();
3232
}
3333

3434
public double dasum(int n, double[] x, int incx);

blas/src/main/java/dev/ludovic/netlib/blas/InstanceBuilder.java

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,56 +31,57 @@ final class InstanceBuilder {
3131

3232
private static final Logger log = Logger.getLogger(InstanceBuilder.class.getName());
3333

34-
private static final BLAS blas = getInstanceImpl();
34+
private static final BLAS blas;
35+
private static final NativeBLAS nativeBlas;
36+
private static final JavaBLAS javaBlas;
3537

36-
public static BLAS getInstance() {
37-
return blas;
38-
}
39-
40-
private static dev.ludovic.netlib.blas.BLAS getInstanceImpl() {
41-
try {
42-
return NativeBLAS.getInstance();
43-
} catch (Throwable t) {
44-
log.warning("Failed to load implementation from:" + dev.ludovic.netlib.blas.NativeBLAS.class.getName());
45-
}
46-
return JavaBLAS.getInstance();
38+
static {
39+
nativeBlas = initializeNative();
40+
javaBlas = initializeJava();
41+
blas = nativeBlas != null ? nativeBlas : javaBlas;
4742
}
4843

49-
private static final NativeBLAS nativeBlas = getNativeInstanceImpl();
50-
51-
public static NativeBLAS getNativeInstance() {
52-
return nativeBlas;
44+
public static BLAS blas() {
45+
return blas;
5346
}
5447

55-
private static NativeBLAS getNativeInstanceImpl() {
48+
private static NativeBLAS initializeNative() {
5649
try {
5750
return JNIBLAS.getInstance();
5851
} catch (Throwable t) {
5952
log.warning("Failed to load implementation from:" + JNIBLAS.class.getName());
53+
return null;
6054
}
61-
throw new RuntimeException("Unable to load native implementation");
6255
}
6356

64-
private static final JavaBLAS javaBlas = getJavaInstanceImpl();
65-
66-
public static JavaBLAS getJavaInstance() {
67-
return javaBlas;
57+
public static NativeBLAS nativeBlas() {
58+
if (nativeBlas == null) {
59+
throw new RuntimeException("Unable to load native implementation");
60+
}
61+
return nativeBlas;
6862
}
6963

70-
private static JavaBLAS getJavaInstanceImpl() {
64+
private static JavaBLAS initializeJava() {
7165
String[] fullVersion = System.getProperty("java.version").split("[+.\\-]+", 2);
7266
int major = Integer.parseInt(fullVersion[0]);
7367
if (major >= 16) {
7468
try {
69+
System.out.println("trying to return java 16 instance");
7570
return VectorBLAS.getInstance();
7671
} catch (Throwable t) {
7772
log.warning("Failed to load implementation from:" + VectorBLAS.class.getName());
7873
}
7974
}
8075
if (major >= 11) {
76+
System.out.println("return java 11 instance");
8177
return Java11BLAS.getInstance();
8278
} else {
79+
System.out.println("return java 8 instance");
8380
return Java8BLAS.getInstance();
8481
}
8582
}
83+
84+
public static JavaBLAS javaBlas() {
85+
return javaBlas;
86+
}
8687
}

blas/src/main/java/dev/ludovic/netlib/blas/JavaBLAS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828
public interface JavaBLAS extends BLAS {
2929

3030
public static JavaBLAS getInstance() {
31-
return InstanceBuilder.getJavaInstance();
31+
return InstanceBuilder.javaBlas();
3232
}
3333
}

blas/src/main/java/dev/ludovic/netlib/blas/NativeBLAS.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828
public interface NativeBLAS extends BLAS {
2929

3030
public static NativeBLAS getInstance() {
31-
return InstanceBuilder.getNativeInstance();
31+
return InstanceBuilder.nativeBlas();
3232
}
3333
}

lapack/src/main/java/dev/ludovic/netlib/lapack/InstanceBuilder.java

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,43 +31,41 @@ final class InstanceBuilder {
3131

3232
private static final Logger log = Logger.getLogger(InstanceBuilder.class.getName());
3333

34-
private static final LAPACK lapack = getInstanceImpl();
34+
private static final LAPACK lapack;
35+
private static final NativeLAPACK nativeLapack;
36+
private static final JavaLAPACK javaLapack;
3537

36-
public static LAPACK getInstance() {
37-
return lapack;
38-
}
39-
40-
private static LAPACK getInstanceImpl() {
41-
try {
42-
return NativeLAPACK.getInstance();
43-
} catch (Throwable t) {
44-
log.warning("Failed to load implementation from:" + NativeLAPACK.class.getName());
45-
}
46-
return JavaLAPACK.getInstance();
38+
static {
39+
nativeLapack = initializeNative();
40+
javaLapack = initializeJava();
41+
lapack = nativeLapack != null ? nativeLapack : javaLapack;
4742
}
4843

49-
private static final NativeLAPACK nativeLapack = getNativeInstanceImpl();
50-
51-
public static NativeLAPACK getNativeInstance() {
52-
return nativeLapack;
44+
public static LAPACK lapack() {
45+
return lapack;
5346
}
5447

55-
private static NativeLAPACK getNativeInstanceImpl() {
48+
private static NativeLAPACK initializeNative() {
5649
try {
5750
return JNILAPACK.getInstance();
5851
} catch (Throwable t) {
5952
log.warning("Failed to load implementation from:" + JNILAPACK.class.getName());
53+
return null;
6054
}
61-
throw new RuntimeException("Unable to load native implementation");
6255
}
6356

64-
private static final JavaLAPACK javaLapack = getJavaInstanceImpl();
65-
66-
public static JavaLAPACK getJavaInstance() {
67-
return javaLapack;
57+
public static NativeLAPACK nativeLapack() {
58+
if (nativeLapack == null) {
59+
throw new RuntimeException("Unable to load native implementation");
60+
}
61+
return nativeLapack;
6862
}
6963

70-
private static JavaLAPACK getJavaInstanceImpl() {
64+
private static JavaLAPACK initializeJava() {
7165
return F2jLAPACK.getInstance();
7266
}
67+
68+
public static JavaLAPACK javaLapack() {
69+
return javaLapack;
70+
}
7371
}

lapack/src/main/java/dev/ludovic/netlib/lapack/JavaLAPACK.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,6 @@
2828
public interface JavaLAPACK extends LAPACK {
2929

3030
public static JavaLAPACK getInstance() {
31-
return InstanceBuilder.getJavaInstance();
31+
return InstanceBuilder.javaLapack();
3232
}
3333
}

0 commit comments

Comments
 (0)