Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#4,983 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Ferma
Stack tecnologico
java
Ambito
api, backend

Direzione di ricerca

Inizia da org.apache.servicecomb.swagger.extend.introspector.JsonPropertyIntrospector.findPropertyDescription, identificato alla riga 51 dello stack trace. Esegui la riproduzione MainTest fornita tramite SwaggerUtils.resolveTypeSchemas sia per ClassRsp sia per RecordRsp, quindi verifica che le proprietà di record contenenti Lang non generino più una NullPointerException, mentre il caso Class esistente continui a funzionare correttamente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug
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

Lingua principale
Java
Stelle
1.9k
Fork
813
Merge medio
8g 23h
PR unite (30g)
1

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/servicecomb-java-chassis

Tutte le issue di apache/servicecomb-java-chassis

Issue simili

Altre issue su Java

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.