Azure / azure-functions-java-worker

Java runtime and core types for Microsoft Azure Functions
MIT License
87 stars 54 forks source link

Single Object on TableInput Anootation #777

Open fiurthorn opened 1 month ago

fiurthorn commented 1 month ago

if i use the following function deklaration for an azure function i get the appnded deserialization exception if i test the function locally. Changeing the Token to List<Token> everthing work fine. But the Documentations say i can use Single Objects, not only lists.

        @FunctionName("extract")
        public HttpResponseMessage extract(
                        @HttpTrigger(name = "req", methods = {
                                        HttpMethod.GET }, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request, //
                        @TableInput(name = "token", partitionKey = "eInvoice", tableName = "tokens", rowKey = "{token}", connection = "AzureWebJobsStorage") Token token, //
                        @TableOutput(name = "invoice", tableName = "invoices", connection = "AzureWebJobsStorage") OutputBinding<Invoice> invoices, //
                        final ExecutionContext context//
        ) {
[2024-08-01T07:58:18.252Z] Executed 'Functions.extract' (Failed, Id=926c9f01-9704-46ae-a30d-a0ae7d1962f3, Duration=414ms)
[2024-08-01T07:58:18.252Z] System.Private.CoreLib: Exception while executing function: Functions.extract. System.Private.CoreLib: Result: Failure
[2024-08-01T07:58:18.252Z] Exception: IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
[2024-08-01T07:58:18.252Z] Stack: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
[2024-08-01T07:58:18.252Z]      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:225)
[2024-08-01T07:58:18.252Z]      at com.google.gson.Gson.fromJson(Gson.java:991)
[2024-08-01T07:58:18.252Z]      at com.google.gson.Gson.fromJson(Gson.java:956)
[2024-08-01T07:58:18.252Z]      at com.google.gson.Gson.fromJson(Gson.java:905)
[2024-08-01T07:58:18.252Z]      at com.microsoft.azure.functions.worker.binding.DataOperations.convertFromJson(DataOperations.java:158)
[2024-08-01T07:58:18.252Z]      at com.microsoft.azure.functions.worker.binding.DataOperations.apply(DataOperations.java:114)
[2024-08-01T07:58:18.252Z]      at com.microsoft.azure.functions.worker.binding.DataSource.computeByType(DataSource.java:56)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.binding.RpcJsonDataSource.computeByType(RpcJsonDataSource.java:15)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.binding.DataSource.computeByName(DataSource.java:42)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.binding.RpcJsonDataSource.computeByName(RpcJsonDataSource.java:15)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.binding.BindingDataStore.getDataByName(BindingDataStore.java:59)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.binding.ExecutionContextDataSource.getBindingData(ExecutionContextDataSource.java:176)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolve(ParameterResolver.java:44)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.broker.ParameterResolver.resolveArguments(ParameterResolver.java:22)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.broker.JavaMethodExecutor.execute(JavaMethodExecutor.java:20)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.chain.FunctionExecutionMiddleware.invoke(FunctionExecutionMiddleware.java:19)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.chain.InvocationChain.doNext(InvocationChain.java:21)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invoke(JavaFunctionBroker.java:133)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.broker.JavaFunctionBroker.invokeMethod(JavaFunctionBroker.java:124)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:34)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.handler.InvocationRequestHandler.execute(InvocationRequestHandler.java:10)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.handler.MessageHandler.handle(MessageHandler.java:44)
[2024-08-01T07:58:18.253Z]      at com.microsoft.azure.functions.worker.JavaWorkerClient$StreamingMessagePeer.lambda$onNext$0(JavaWorkerClient.java:94)
[2024-08-01T07:58:18.253Z]      at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
[2024-08-01T07:58:18.253Z]      at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[2024-08-01T07:58:18.253Z]      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[2024-08-01T07:58:18.253Z]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[2024-08-01T07:58:18.253Z]      at java.base/java.lang.Thread.run(Thread.java:833)
[2024-08-01T07:58:18.253Z] Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
[2024-08-01T07:58:18.253Z]      at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
[2024-08-01T07:58:18.253Z]      at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:214)
[2024-08-01T07:58:18.253Z]      ... 27 more
[2024-08-01T07:58:18.253Z] .