Skip to content

[BUG] - JsonPropertyIntrospector处理record类型里的枚举值时,会报空指针异常 #4983

Open

Description

@yinhaox

Steps to Reproduce

简单示例:

package test;

import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.models.OpenAPI;

import org.apache.servicecomb.swagger.SwaggerUtils;
import org.junit.jupiter.api.Test;

class MainTest {
    @Test
    void test() {
        SwaggerUtils.resolveTypeSchemas(new OpenAPI(), ClassRsp.class); // OK
        SwaggerUtils.resolveTypeSchemas(new OpenAPI(), RecordRsp.class); // ERROR
    }

    public enum Lang {
        JAVA, CHINESE, UNKNOWN;
    }

    public static class ClassRsp {
        @Schema(description = "language")
        private Lang lang;

        public Lang getLang() {
            return lang;
        }

        public void setLang(Lang lang) {
            this.lang = lang;
        }
    }

    public record RecordRsp(
            @Schema(description = "language") Lang lang
    ) {}
}

Expected Behavior

报错:

java.lang.NullPointerException: Cannot invoke "java.lang.reflect.AnnotatedElement.getAnnotations()" because the return value of "com.fasterxml.jackson.databind.introspect.Annotated.getAnnotated()" is null

	at org.apache.servicecomb.swagger.extend.introspector.JsonPropertyIntrospector.findPropertyDescription(JsonPropertyIntrospector.java:51)
	at com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair.findPropertyDescription(AnnotationIntrospectorPair.java:450)
	at com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder.getMetadata(POJOPropertyBuilder.java:228)
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._anyIndexed(POJOPropertiesCollector.java:1376)
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector._sortProperties(POJOPropertiesCollector.java:1278)
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.collectAll(POJOPropertiesCollector.java:529)
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getPropertyMap(POJOPropertiesCollector.java:413)
	at com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector.getProperties(POJOPropertiesCollector.java:255)
	at com.fasterxml.jackson.databind.introspect.BasicBeanDescription._properties(BasicBeanDescription.java:164)
	at com.fasterxml.jackson.databind.introspect.BasicBeanDescription.findProperties(BasicBeanDescription.java:239)
	at io.swagger.v3.core.jackson.ModelResolver.resolveAccessMode(ModelResolver.java:1960)
	at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:672)
	at org.apache.servicecomb.swagger.extend.ModelResolverExt.resolve(ModelResolverExt.java:110)
	at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97)
	at io.swagger.v3.core.converter.ModelConverters.resolveAsResolvedSchema(ModelConverters.java:158)
	at org.apache.servicecomb.swagger.SwaggerUtils.resolveTypeSchemas(SwaggerUtils.java:213)
	at test.MainTest.test(MainTest.java:13)

Servicecomb Version

No response

Additional Context

No response

Activity

  1. SweetWuXiaoMei commented on Oct 27, 2025

    @SweetWuXiaoMei
    Member

    Can you fix it with pr

  2. caimo commented on Nov 8, 2025

    @caimo
    Contributor
  3. hezhangjian commented on Nov 12, 2026

    @hezhangjian
    Member

    A fix for this NPE was merged into master in #5012. The latest published 3.x release, 3.3.0, predates that merge and does not include the fix.

    Could you share the exact ServiceComb version you are using? If you can test a build from master in a development environment, please also confirm whether it resolves your reproducer. I have not found a backport PR to 3.3.x or 2.x.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions