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)