From 4a52268f1968bade7d642d9d747b481cef6cf0df Mon Sep 17 00:00:00 2001 From: mikereiche Date: Mon, 14 Sep 2020 16:57:00 -0700 Subject: [PATCH] DATACOUCH-604 - Fix NPE when looking for Id field in interface. This was failing with a repository for the domain object CouchbaseOAuth2AccessToken. The following dependency is needed. org.springframework.security.oauth spring-security-oauth2 2.4.1.RELEASE package org.springframework.data.couchbase.domain; import org.springframework.data.annotation.Id; import org.springframework.data.couchbase.core.mapping.Document; import org.springframework.data.couchbase.core.mapping.Field; import org.springframework.security.oauth2.common.DefaultOAuth2AccessToken; import org.springframework.security.oauth2.common.OAuth2AccessToken; @Document(expiry = 30 * 24 * 60 * 60) public class CouchbaseOAuth2AccessToken extends DefaultOAuth2AccessToken { private static final long serialVersionUID = 6537949925775752989L; @Id private String tokenId; @Field private String authentication; @Field private String authenticationKey; @Field private String clientId; @Field private String userName; // getters and setters omitted for brevity private CouchbaseOAuth2AccessToken() { this((String) null); } public CouchbaseOAuth2AccessToken(OAuth2AccessToken accessToken) { super(accessToken); this.tokenId = accessToken.getValue(); } public CouchbaseOAuth2AccessToken(String value) { super(value); this.tokenId = value; } } --- .../mapping/BasicCouchbasePersistentProperty.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/springframework/data/couchbase/core/mapping/BasicCouchbasePersistentProperty.java b/src/main/java/org/springframework/data/couchbase/core/mapping/BasicCouchbasePersistentProperty.java index 6715b440..6255f249 100644 --- a/src/main/java/org/springframework/data/couchbase/core/mapping/BasicCouchbasePersistentProperty.java +++ b/src/main/java/org/springframework/data/couchbase/core/mapping/BasicCouchbasePersistentProperty.java @@ -16,7 +16,6 @@ package org.springframework.data.couchbase.core.mapping; -import org.springframework.data.annotation.Id; import org.springframework.data.mapping.Association; import org.springframework.data.mapping.MappingException; import org.springframework.data.mapping.model.AnnotationBasedPersistentProperty; @@ -28,8 +27,6 @@ import org.springframework.util.StringUtils; import com.couchbase.client.core.deps.com.fasterxml.jackson.annotation.JsonProperty; -import java.util.Locale; - /** * Implements annotated property representations of a given {@link Field} instance. *

@@ -99,7 +96,13 @@ public class BasicCouchbasePersistentProperty extends AnnotationBasedPersistentP // DATACOUCH-145: allows SDK's @Id annotation to be used @Override public boolean isIdProperty() { - return isAnnotationPresent(Id.class) || super.isIdProperty() - || this.getFieldName().toLowerCase(Locale.ROOT).equals("id"); + if (super.isIdProperty()){ + return true; + } + // is field named "id" + if(getName().equals("id")){ + return true; + } + return false; } }