diff --git a/pom.xml b/pom.xml
index bb494b3..a006a44 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,6 +95,11 @@
${cdi}
true
+
+ org.jspecify
+ jspecify
+ 1.0.0
+
jakarta.annotation
diff --git a/src/main/java/org/springframework/data/ldap/config/package-info.java b/src/main/java/org/springframework/data/ldap/config/package-info.java
index 413d7df..9e8fb95 100644
--- a/src/main/java/org/springframework/data/ldap/config/package-info.java
+++ b/src/main/java/org/springframework/data/ldap/config/package-info.java
@@ -1,7 +1,5 @@
/**
* XML configuration support for Spring Data LDAP repositories.
*/
-@NonNullApi
+@org.jspecify.annotations.NullMarked
package org.springframework.data.ldap.config;
-
-import org.springframework.lang.NonNullApi;
diff --git a/src/main/java/org/springframework/data/ldap/core/mapping/BasicLdapPersistentEntity.java b/src/main/java/org/springframework/data/ldap/core/mapping/BasicLdapPersistentEntity.java
index 8d581c8..1768f5b 100644
--- a/src/main/java/org/springframework/data/ldap/core/mapping/BasicLdapPersistentEntity.java
+++ b/src/main/java/org/springframework/data/ldap/core/mapping/BasicLdapPersistentEntity.java
@@ -35,4 +35,5 @@ public class BasicLdapPersistentEntity extends BasicPersistentEntity information) {
super(information);
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/core/mapping/LdapMappingContext.java b/src/main/java/org/springframework/data/ldap/core/mapping/LdapMappingContext.java
index 3948e4a..88825ba 100644
--- a/src/main/java/org/springframework/data/ldap/core/mapping/LdapMappingContext.java
+++ b/src/main/java/org/springframework/data/ldap/core/mapping/LdapMappingContext.java
@@ -45,4 +45,5 @@ public class LdapMappingContext extends AbstractMappingContext createAssociation() {
- return null;
+ throw new UnsupportedOperationException("LDAP does not support associations");
}
@Override
public boolean isIdProperty() {
return isId.get();
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/core/mapping/LdapSimpleTypes.java b/src/main/java/org/springframework/data/ldap/core/mapping/LdapSimpleTypes.java
index 5658942..9f9082e 100644
--- a/src/main/java/org/springframework/data/ldap/core/mapping/LdapSimpleTypes.java
+++ b/src/main/java/org/springframework/data/ldap/core/mapping/LdapSimpleTypes.java
@@ -44,4 +44,5 @@ public abstract class LdapSimpleTypes {
public static final SimpleTypeHolder HOLDER = new SimpleTypeHolder(VAULT_SIMPLE_TYPES, true);
private LdapSimpleTypes() {}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/core/mapping/package-info.java b/src/main/java/org/springframework/data/ldap/core/mapping/package-info.java
index 6313446..b90b78c 100644
--- a/src/main/java/org/springframework/data/ldap/core/mapping/package-info.java
+++ b/src/main/java/org/springframework/data/ldap/core/mapping/package-info.java
@@ -1,6 +1,5 @@
/**
* Infrastructure for the LDAP object mapping subsystem.
*/
-@org.springframework.lang.NonNullApi
-@org.springframework.lang.NonNullFields
+@org.jspecify.annotations.NullMarked
package org.springframework.data.ldap.core.mapping;
diff --git a/src/main/java/org/springframework/data/ldap/repository/LdapEncoder.java b/src/main/java/org/springframework/data/ldap/repository/LdapEncoder.java
index f617ce5..108a6ca 100644
--- a/src/main/java/org/springframework/data/ldap/repository/LdapEncoder.java
+++ b/src/main/java/org/springframework/data/ldap/repository/LdapEncoder.java
@@ -49,6 +49,7 @@ public interface LdapEncoder {
public String encode(String value) {
return org.springframework.ldap.support.LdapEncoder.nameEncode(value);
}
+
}
/**
@@ -79,6 +80,7 @@ public interface LdapEncoder {
return buff.toString();
}
+
}
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/LdapRepository.java b/src/main/java/org/springframework/data/ldap/repository/LdapRepository.java
index 702c9a5..9086524 100644
--- a/src/main/java/org/springframework/data/ldap/repository/LdapRepository.java
+++ b/src/main/java/org/springframework/data/ldap/repository/LdapRepository.java
@@ -48,4 +48,5 @@ public interface LdapRepository extends ListCrudRepository {
* @return the entries matching the query.
*/
List findAll(LdapQuery ldapQuery);
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/Query.java b/src/main/java/org/springframework/data/ldap/repository/Query.java
index b12ed59..6e8b37a 100644
--- a/src/main/java/org/springframework/data/ldap/repository/Query.java
+++ b/src/main/java/org/springframework/data/ldap/repository/Query.java
@@ -75,4 +75,5 @@ public @interface Query {
* @return the count limit.
*/
int countLimit() default 0;
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryBean.java b/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryBean.java
index ccf371d..b5dcf9f 100644
--- a/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryBean.java
+++ b/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryBean.java
@@ -70,4 +70,5 @@ public class LdapRepositoryBean extends CdiRepositoryBean {
public Class extends Annotation> getScope() {
return operations.getScope();
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryExtension.java b/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryExtension.java
index d86129d..b878bc9 100644
--- a/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryExtension.java
+++ b/src/main/java/org/springframework/data/ldap/repository/cdi/LdapRepositoryExtension.java
@@ -115,4 +115,5 @@ public class LdapRepositoryExtension extends CdiRepositoryExtensionSupport {
return new LdapRepositoryBean<>(LdapOperations, qualifiers, repositoryType, beanManager,
Optional.of(getCustomImplementationDetector()));
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/cdi/package-info.java b/src/main/java/org/springframework/data/ldap/repository/cdi/package-info.java
index 90e60bc..b4824f2 100644
--- a/src/main/java/org/springframework/data/ldap/repository/cdi/package-info.java
+++ b/src/main/java/org/springframework/data/ldap/repository/cdi/package-info.java
@@ -1,5 +1,5 @@
/**
* CDI support for LDAP specific repository implementation.
*/
-@org.springframework.lang.NonNullApi
+@org.jspecify.annotations.NullMarked
package org.springframework.data.ldap.repository.cdi;
diff --git a/src/main/java/org/springframework/data/ldap/repository/config/LdapRepositoriesRegistrar.java b/src/main/java/org/springframework/data/ldap/repository/config/LdapRepositoriesRegistrar.java
index 3c8b076..c6052f1 100644
--- a/src/main/java/org/springframework/data/ldap/repository/config/LdapRepositoriesRegistrar.java
+++ b/src/main/java/org/springframework/data/ldap/repository/config/LdapRepositoriesRegistrar.java
@@ -36,4 +36,5 @@ class LdapRepositoriesRegistrar extends RepositoryBeanDefinitionRegistrarSupport
protected RepositoryConfigurationExtension getExtension() {
return new LdapRepositoryConfigurationExtension();
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/config/LdapRepositoryConfigurationExtension.java b/src/main/java/org/springframework/data/ldap/repository/config/LdapRepositoryConfigurationExtension.java
index 782bb59..54d7df0 100644
--- a/src/main/java/org/springframework/data/ldap/repository/config/LdapRepositoryConfigurationExtension.java
+++ b/src/main/java/org/springframework/data/ldap/repository/config/LdapRepositoryConfigurationExtension.java
@@ -112,4 +112,5 @@ public class LdapRepositoryConfigurationExtension extends RepositoryConfiguratio
protected boolean useRepositoryConfiguration(RepositoryMetadata metadata) {
return !metadata.isReactiveRepository();
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/config/package-info.java b/src/main/java/org/springframework/data/ldap/repository/config/package-info.java
index 79dacb3..4f86547 100644
--- a/src/main/java/org/springframework/data/ldap/repository/config/package-info.java
+++ b/src/main/java/org/springframework/data/ldap/repository/config/package-info.java
@@ -1,7 +1,5 @@
/**
* Support infrastructure for the configuration of LDAP specific repositories.
*/
-@NonNullApi
+@org.jspecify.annotations.NullMarked
package org.springframework.data.ldap.repository.config;
-
-import org.springframework.lang.NonNullApi;
diff --git a/src/main/java/org/springframework/data/ldap/repository/package-info.java b/src/main/java/org/springframework/data/ldap/repository/package-info.java
index 4390d1e..ec8a36a 100644
--- a/src/main/java/org/springframework/data/ldap/repository/package-info.java
+++ b/src/main/java/org/springframework/data/ldap/repository/package-info.java
@@ -1,5 +1,5 @@
/**
* LDAP specific repository implementation.
*/
-@org.springframework.lang.NonNullApi
+@org.jspecify.annotations.NullMarked
package org.springframework.data.ldap.repository;
diff --git a/src/main/java/org/springframework/data/ldap/repository/query/AbstractLdapRepositoryQuery.java b/src/main/java/org/springframework/data/ldap/repository/query/AbstractLdapRepositoryQuery.java
index 86d1fef..28f5312 100644
--- a/src/main/java/org/springframework/data/ldap/repository/query/AbstractLdapRepositoryQuery.java
+++ b/src/main/java/org/springframework/data/ldap/repository/query/AbstractLdapRepositoryQuery.java
@@ -17,6 +17,8 @@ package org.springframework.data.ldap.repository.query;
import static org.springframework.data.ldap.repository.query.LdapQueryExecution.*;
+import org.jspecify.annotations.Nullable;
+
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.ldap.repository.Query;
import org.springframework.data.mapping.PersistentEntity;
@@ -71,7 +73,7 @@ public abstract class AbstractLdapRepositoryQuery implements RepositoryQuery {
@Override
@SuppressWarnings("ConstantConditions")
- public final Object execute(Object[] parameters) {
+ public final @Nullable Object execute(Object[] parameters) {
LdapParametersParameterAccessor parameterAccessor = new LdapParametersParameterAccessor(queryMethod, parameters);
LdapQuery query = createQuery(parameterAccessor);
@@ -117,4 +119,5 @@ public abstract class AbstractLdapRepositoryQuery implements RepositoryQuery {
public final QueryMethod getQueryMethod() {
return queryMethod;
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/query/LdapParameterAccessor.java b/src/main/java/org/springframework/data/ldap/repository/query/LdapParameterAccessor.java
index 7137d6f..543e4b6 100644
--- a/src/main/java/org/springframework/data/ldap/repository/query/LdapParameterAccessor.java
+++ b/src/main/java/org/springframework/data/ldap/repository/query/LdapParameterAccessor.java
@@ -31,4 +31,5 @@ public interface LdapParameterAccessor extends ParameterAccessor {
* @return
*/
Object[] getBindableParameterValues();
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/query/LdapParameters.java b/src/main/java/org/springframework/data/ldap/repository/query/LdapParameters.java
index 3186324..ee99baa 100644
--- a/src/main/java/org/springframework/data/ldap/repository/query/LdapParameters.java
+++ b/src/main/java/org/springframework/data/ldap/repository/query/LdapParameters.java
@@ -18,6 +18,8 @@ package org.springframework.data.ldap.repository.query;
import java.lang.reflect.Method;
import java.util.List;
+import org.jspecify.annotations.Nullable;
+
import org.springframework.beans.BeanUtils;
import org.springframework.core.MethodParameter;
import org.springframework.data.geo.Distance;
@@ -27,7 +29,6 @@ import org.springframework.data.repository.query.Parameter;
import org.springframework.data.repository.query.Parameters;
import org.springframework.data.repository.query.ParametersSource;
import org.springframework.data.util.TypeInformation;
-import org.springframework.lang.Nullable;
/**
* Custom extension of {@link Parameters} discovering additional
diff --git a/src/main/java/org/springframework/data/ldap/repository/query/LdapQueryCreator.java b/src/main/java/org/springframework/data/ldap/repository/query/LdapQueryCreator.java
index 6392a44..6dcb3bf 100644
--- a/src/main/java/org/springframework/data/ldap/repository/query/LdapQueryCreator.java
+++ b/src/main/java/org/springframework/data/ldap/repository/query/LdapQueryCreator.java
@@ -15,11 +15,11 @@
*/
package org.springframework.data.ldap.repository.query;
-import static org.springframework.ldap.query.LdapQueryBuilder.*;
-
import java.util.Iterator;
import java.util.List;
+import org.jspecify.annotations.Nullable;
+
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.data.domain.Sort;
import org.springframework.data.mapping.PropertyPath;
@@ -73,7 +73,7 @@ class LdapQueryCreator extends AbstractQueryCreator extends AbstractEntityInformation {
this.odm = odm;
}
- @Nullable
@Override
- public Name getId(T entity) {
+ public @Nullable Name getId(T entity) {
return odm.getId(entity);
}
@@ -49,4 +49,5 @@ class LdapEntityInformation extends AbstractEntityInformation {
public Class getIdType() {
return Name.class;
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/support/LdapRepositoryFactory.java b/src/main/java/org/springframework/data/ldap/repository/support/LdapRepositoryFactory.java
index 838cffe..d68ddfd 100644
--- a/src/main/java/org/springframework/data/ldap/repository/support/LdapRepositoryFactory.java
+++ b/src/main/java/org/springframework/data/ldap/repository/support/LdapRepositoryFactory.java
@@ -22,6 +22,8 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.Optional;
+import org.jspecify.annotations.Nullable;
+
import org.springframework.dao.InvalidDataAccessApiUsageException;
import org.springframework.data.ldap.core.mapping.LdapMappingContext;
import org.springframework.data.ldap.repository.query.AnnotatedLdapRepositoryQuery;
@@ -149,7 +151,7 @@ public class LdapRepositoryFactory extends RepositoryFactorySupport {
}
@Override
- protected Optional getQueryLookupStrategy(Key key,
+ protected Optional getQueryLookupStrategy(@Nullable Key key,
ValueExpressionDelegate valueExpressionDelegate) {
return Optional
.of(new LdapQueryLookupStrategy(ldapOperations, instantiators, mappingContext, valueExpressionDelegate));
@@ -199,5 +201,7 @@ public class LdapRepositoryFactory extends RepositoryFactorySupport {
return new PartTreeLdapRepositoryQuery(queryMethod, domainType, ldapOperations, mappingContext, instantiators);
}
}
+
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/support/LdapRepositoryFactoryBean.java b/src/main/java/org/springframework/data/ldap/repository/support/LdapRepositoryFactoryBean.java
index c5c94bf..653535d 100644
--- a/src/main/java/org/springframework/data/ldap/repository/support/LdapRepositoryFactoryBean.java
+++ b/src/main/java/org/springframework/data/ldap/repository/support/LdapRepositoryFactoryBean.java
@@ -17,6 +17,8 @@ package org.springframework.data.ldap.repository.support;
import javax.naming.Name;
+import org.jspecify.annotations.Nullable;
+
import org.springframework.data.ldap.core.mapping.LdapMappingContext;
import org.springframework.data.mapping.PersistentEntity;
import org.springframework.data.mapping.PersistentProperty;
@@ -24,7 +26,6 @@ import org.springframework.data.mapping.context.MappingContext;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport;
import org.springframework.data.repository.core.support.RepositoryFactorySupport;
-import org.springframework.lang.Nullable;
import org.springframework.ldap.core.LdapOperations;
import org.springframework.util.Assert;
@@ -87,4 +88,5 @@ public class LdapRepositoryFactoryBean, S>
setMappingContext(new LdapMappingContext());
}
}
+
}
diff --git a/src/main/java/org/springframework/data/ldap/repository/support/LdapSerializer.java b/src/main/java/org/springframework/data/ldap/repository/support/LdapSerializer.java
index c193aea..d2462f5 100644
--- a/src/main/java/org/springframework/data/ldap/repository/support/LdapSerializer.java
+++ b/src/main/java/org/springframework/data/ldap/repository/support/LdapSerializer.java
@@ -126,4 +126,5 @@ class LdapSerializer implements Visitor