io.avaje
avaje-applog
diff --git a/inject/src/main/java/io/avaje/inject/BeanEntry.java b/inject/src/main/java/io/avaje/inject/BeanEntry.java
index c7f6ceda3..889757e4c 100644
--- a/inject/src/main/java/io/avaje/inject/BeanEntry.java
+++ b/inject/src/main/java/io/avaje/inject/BeanEntry.java
@@ -1,7 +1,5 @@
package io.avaje.inject;
-import io.avaje.lang.NonNullApi;
-
import java.util.Set;
/**
@@ -9,7 +7,6 @@
*
* @see BeanScope#all()
*/
-@NonNullApi
public interface BeanEntry {
/**
diff --git a/inject/src/main/java/io/avaje/inject/BeanScope.java b/inject/src/main/java/io/avaje/inject/BeanScope.java
index 85fe78b0e..0a480b4a0 100644
--- a/inject/src/main/java/io/avaje/inject/BeanScope.java
+++ b/inject/src/main/java/io/avaje/inject/BeanScope.java
@@ -6,8 +6,7 @@
import java.util.Map;
import java.util.Optional;
-import io.avaje.lang.NonNullApi;
-import io.avaje.lang.Nullable;
+import org.jspecify.annotations.Nullable;
/**
* Holds beans created by dependency injection.
@@ -67,7 +66,6 @@
*
* }
*/
-@NonNullApi
public interface BeanScope extends AutoCloseable {
/**
diff --git a/inject/src/main/java/io/avaje/inject/BeanScopeBuilder.java b/inject/src/main/java/io/avaje/inject/BeanScopeBuilder.java
index a438aabaf..cad20dc36 100644
--- a/inject/src/main/java/io/avaje/inject/BeanScopeBuilder.java
+++ b/inject/src/main/java/io/avaje/inject/BeanScopeBuilder.java
@@ -1,15 +1,15 @@
package io.avaje.inject;
-import io.avaje.inject.spi.AvajeModule;
-import io.avaje.inject.spi.ConfigPropertyPlugin;
-import io.avaje.inject.spi.PropertyRequiresPlugin;
-import io.avaje.lang.NonNullApi;
-import io.avaje.lang.Nullable;
-
import java.lang.reflect.Type;
import java.util.function.Consumer;
import java.util.function.Supplier;
+import org.jspecify.annotations.Nullable;
+
+import io.avaje.inject.spi.AvajeModule;
+import io.avaje.inject.spi.ConfigPropertyPlugin;
+import io.avaje.inject.spi.PropertyRequiresPlugin;
+
/**
* Build a bean scope with options for shutdown hook and supplying external dependencies.
*
@@ -30,7 +30,6 @@
*
* }
*/
-@NonNullApi
public interface BeanScopeBuilder {
/**
diff --git a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java
index 58d95dad1..186ed4695 100644
--- a/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java
+++ b/inject/src/main/java/io/avaje/inject/DBeanScopeBuilder.java
@@ -3,6 +3,7 @@
import static java.lang.System.Logger.Level.DEBUG;
import static java.lang.System.Logger.Level.INFO;
import static java.util.Collections.emptySet;
+
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
@@ -14,14 +15,20 @@
import java.util.function.Consumer;
import java.util.function.Supplier;
+import org.jspecify.annotations.Nullable;
+
import io.avaje.applog.AppLog;
-import io.avaje.inject.spi.*;
-import io.avaje.lang.NonNullApi;
-import io.avaje.lang.Nullable;
+import io.avaje.inject.spi.AvajeModule;
+import io.avaje.inject.spi.Builder;
+import io.avaje.inject.spi.ClosePair;
+import io.avaje.inject.spi.ConfigPropertyPlugin;
+import io.avaje.inject.spi.EnrichBean;
+import io.avaje.inject.spi.ModuleOrdering;
+import io.avaje.inject.spi.PropertyRequiresPlugin;
+import io.avaje.inject.spi.SuppliedBean;
import jakarta.inject.Provider;
/** Build a bean scope with options for shutdown hook and supplying test doubles. */
-@NonNullApi
final class DBeanScopeBuilder implements BeanScopeBuilder.ForTesting {
private static final System.Logger log = AppLog.getLogger("io.avaje.inject");
diff --git a/inject/src/main/java/io/avaje/inject/package-info.java b/inject/src/main/java/io/avaje/inject/package-info.java
index d86ae4f7b..1d14d17ee 100644
--- a/inject/src/main/java/io/avaje/inject/package-info.java
+++ b/inject/src/main/java/io/avaje/inject/package-info.java
@@ -26,4 +26,5 @@
*
* }
*/
+@org.jspecify.annotations.NullMarked
package io.avaje.inject;
diff --git a/inject/src/main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java b/inject/src/main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java
index 61c7bb477..29850b0b4 100644
--- a/inject/src/main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java
+++ b/inject/src/main/java/io/avaje/inject/spi/ConfigPropertyPlugin.java
@@ -2,7 +2,7 @@
import java.util.Optional;
-import io.avaje.lang.NonNullApi;
+import org.jspecify.annotations.NullMarked;
/**
* Plugin interface which contains the application properties used for wiring. Used with
@@ -11,28 +11,33 @@
*
The plugin is loaded via ServiceLoader and defaults to an implementation that uses {@link
* System#getProperty(String)} and {@link System#getenv(String)}.
*/
-@NonNullApi
+@NullMarked
public interface ConfigPropertyPlugin extends InjectExtension, PropertyRequiresPlugin {
/**
* Return a configuration value that might not exist.
*/
+ @Override
Optional get(String property);
/**
* Return true if the property is defined.
*/
+ @Override
boolean contains(String property);
/** Return true if the property is not defined. */
+ @Override
default boolean missing(String property) {
return !contains(property);
}
/** Return true if the property is equal to the given value. */
+ @Override
boolean equalTo(String property, String value);
/** Return true if the property is not defined or not equal to the given value. */
+ @Override
default boolean notEqualTo(String property, String value) {
return !equalTo(property, value);
}
diff --git a/inject/src/main/java/io/avaje/inject/spi/DBeanScope.java b/inject/src/main/java/io/avaje/inject/spi/DBeanScope.java
index 263087922..430a081ac 100644
--- a/inject/src/main/java/io/avaje/inject/spi/DBeanScope.java
+++ b/inject/src/main/java/io/avaje/inject/spi/DBeanScope.java
@@ -1,24 +1,31 @@
package io.avaje.inject.spi;
-import io.avaje.applog.AppLog;
-import io.avaje.inject.BeanEntry;
-import io.avaje.inject.BeanScope;
-import io.avaje.inject.Priority;
-import io.avaje.lang.NonNullApi;
-import io.avaje.lang.Nullable;
+import static java.lang.System.Logger.Level.INFO;
+import static java.lang.System.Logger.Level.TRACE;
import java.lang.System.Logger.Level;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.IdentityHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Optional;
import java.util.concurrent.locks.ReentrantLock;
import java.util.function.Consumer;
import java.util.stream.Collectors;
-import static java.lang.System.Logger.Level.INFO;
-import static java.lang.System.Logger.Level.TRACE;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
+
+import io.avaje.applog.AppLog;
+import io.avaje.inject.BeanEntry;
+import io.avaje.inject.BeanScope;
+import io.avaje.inject.Priority;
-@NonNullApi
+@NullMarked
final class DBeanScope implements BeanScope {
private static final System.Logger log = AppLog.getLogger("io.avaje.inject");
diff --git a/inject/src/main/java/io/avaje/inject/spi/DEntry.java b/inject/src/main/java/io/avaje/inject/spi/DEntry.java
index 7ab1f0c73..a9239d584 100644
--- a/inject/src/main/java/io/avaje/inject/spi/DEntry.java
+++ b/inject/src/main/java/io/avaje/inject/spi/DEntry.java
@@ -1,12 +1,13 @@
package io.avaje.inject.spi;
-import io.avaje.inject.BeanEntry;
-import io.avaje.lang.NonNullApi;
-
import java.util.LinkedHashSet;
import java.util.Set;
-@NonNullApi
+import org.jspecify.annotations.NullMarked;
+
+import io.avaje.inject.BeanEntry;
+
+@NullMarked
final class DEntry implements BeanEntry {
private final String qualifierName;
diff --git a/inject/src/main/java/io/avaje/inject/spi/PropertyRequiresPlugin.java b/inject/src/main/java/io/avaje/inject/spi/PropertyRequiresPlugin.java
index ed06cf238..f7f03c5e4 100644
--- a/inject/src/main/java/io/avaje/inject/spi/PropertyRequiresPlugin.java
+++ b/inject/src/main/java/io/avaje/inject/spi/PropertyRequiresPlugin.java
@@ -2,7 +2,7 @@
import java.util.Optional;
-import io.avaje.lang.NonNullApi;
+import org.jspecify.annotations.NullMarked;
/**
* Plugin interface which contains the application properties used for wiring. Used with {@link
@@ -13,7 +13,7 @@
*
* @deprecated use ConfigPropertyPlugin Instead
*/
-@NonNullApi
+@NullMarked
@Deprecated(forRemoval = true)
public interface PropertyRequiresPlugin extends InjectExtension {
diff --git a/inject/src/main/java/module-info.java b/inject/src/main/java/module-info.java
index a62bdcfdd..ae9beb14f 100644
--- a/inject/src/main/java/module-info.java
+++ b/inject/src/main/java/module-info.java
@@ -3,13 +3,14 @@
exports io.avaje.inject;
exports io.avaje.inject.spi;
- requires transitive io.avaje.lang;
requires transitive io.avaje.applog;
- requires transitive jakarta.inject;
requires static io.avaje.config;
requires static org.mockito;
requires static io.avaje.spi;
+ requires static transitive jakarta.inject;
+ requires static transitive org.jspecify;
+
uses io.avaje.inject.spi.InjectExtension;
uses io.avaje.inject.spi.Module;
uses io.avaje.inject.spi.Plugin;