Lukasz Rek created JCLOUDS-1581: ----------------------------------- Summary: NullPointerException when parsing Cors object for GCE list buckets request Key: JCLOUDS-1581 URL: https://issues.apache.org/jira/browse/JCLOUDS-1581 Project: jclouds Issue Type: Bug Components: jclouds-blobstore Affects Versions: 2.3.0 Reporter: Lukasz Rek
NullPointerException is thrown when requesting GoogleCloudStorageBlobStore.list for specific buckets. Stack trace: {code:java} java.lang.NullPointerException: Null maxAgeSeconds at org.jclouds.googlecloudstorage.domain.AutoValue_Bucket_Cors.<init>(AutoValue_Bucket_Cors.java:33) at org.jclouds.googlecloudstorage.domain.Bucket$Cors.create(Bucket.java:52) at jdk.internal.reflect.GeneratedMethodAccessor188.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at com.google.common.reflect.Invokable$MethodInvokable.invokeInternal(Invokable.java:200) at com.google.common.reflect.Invokable.invoke(Invokable.java:101) at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.newInstance(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:227) at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:207) at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.readAndBuild(NullFilteringTypeAdapterFactories.java:96) at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:84) at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:63) at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:275) at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:187) at org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.readItems(ListPageAdapterFactory.java:73) at org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.read(ListPageAdapterFactory.java:56) at org.jclouds.googlecloud.config.ListPageAdapterFactory$ListPageAdapter.read(ListPageAdapterFactory.java:36) at com.google.gson.Gson.fromJson(Gson.java:932) at com.google.gson.Gson.fromJson(Gson.java:897) at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:56) at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:83) at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:77) at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:62) at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:42) at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:91) at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:74) at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:45) at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117) at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:86) at com.sun.proxy.$Proxy231.listBucket(Unknown Source) at org.jclouds.googlecloudstorage.blobstore.GoogleCloudStorageBlobStore.list(GoogleCloudStorageBlobStore.java:119) {code} Bucket that is causing exception has following configuration (i removed ids from json): {code:java} { "kind": "storage#bucket", "selfLink": "", "id": "", "name": "", "projectNumber": "", "metageneration": "1", "location": "US-CENTRAL1", "storageClass": "STANDARD", "etag": "CAE=", "timeCreated": "2020-10-26T13:54:23.835Z", "updated": "2020-10-26T13:54:23.835Z", "cors": [ { "origin": [ "https://*.cloud.google.com", "https://*.corp.google.com", "https://*.corp.google.com:*" ], "method": [ "GET" ] } ], "iamConfiguration": { "bucketPolicyOnly": { "enabled": true, "lockedTime": "2021-01-24T13:54:23.835Z" }, "uniformBucketLevelAccess": { "enabled": true, "lockedTime": "2021-01-24T13:54:23.835Z" }, "publicAccessPrevention": "unspecified" }, "locationType": "region" } {code} As you can see the CORS object have no maxAgeSeconds field. This is consistent with documentation (https://cloud.google.com/storage/docs/cross-origin#cors-elements) where maxAgeSeconds is described as optional. -- This message was sent by Atlassian Jira (v8.3.4#803005)