Я написал класс Java для извлечения схемы из реестра схем с помощью feignHttp.Вышеуказанное исключение выдается при попытке получить схему.
Класс клиента:
import com.google.gson.internal.LinkedTreeMap;
import feign.Feign;
import feign.FeignException;
import feign.gson.GsonDecoder;
import feign.gson.GsonEncoder;
import feign.okhttp.OkHttpClient;
import org.apache.avro.Schema;
import org.apache.avro.SchemaParseException;
public class SchemaRegistryReader {
public Schema getSchemaFromID(String registryURL, String schemaID) throws SchemaParseException, FeignException {
SchemaRegistryClient registryClient = Feign.builder()
.client(new OkHttpClient())
.encoder(new GsonEncoder())
.decoder(new GsonDecoder())
.target(SchemaRegistryClient.class, registryURL);
Object returnedSchema = registryClient.findByID(schemaID);
LinkedTreeMap jsonSchemaObject = ((LinkedTreeMap) returnedSchema);
String jsonSchema = jsonSchemaObject.get("schema").toString();
return new Schema.Parser().parse(jsonSchema);
}
}
Интерфейс метода:
import feign.Headers;
import feign.Param;
import feign.RequestLine;
public interface SchemaRegistryClient {
@RequestLine("GET")
Object connect();
@RequestLine("GET /schemas/ids/{id}")
@Headers("Content-Type: application/json")
Object findByID(@Param("id") String id);
}
Исключительное исключение:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.google.gson.internal.LinkedTreeMap at org.wso2.extension.siddhi.map.avro.util.schema.SchemaRegistryReader.getSchemaFromID(SchemaRegistryReader.java:41)
Было бы очень полезно, если бы можно было найти причину этого.