Understood: here is the ticket: https://issues.apache.org/jira/browse/JCLOUDS-836. Hope that someone will put his/her eyes shortly, because jclouds would really save us much code ;) Regards, Édouard
2015-03-04 9:08 GMT+01:00 Ignasi Barrera <[email protected]>: > Yes, an account is required. I'd open the issue myself but if you don't > mind creating an account you'll be able to describe it better and provide > better context. > > Thanks! > El 04/03/2015 07:59, "Édouard sur Smart&Soft" <[email protected]> > escribió: > > Thank you Ignassi for your detailed answer. >> >> I'm pretty sure that if jclouds is supported on GAE, you will have many >> newcomers. Sure, I will open a JIRA ticket, but can you confirm that this >> requires me to create an account, first ? >> >> Thank you for your support. Regards, >> Édouard >> >> 2015-03-03 23:05 GMT+01:00 Ignasi Barrera <[email protected]>: >> >>> Hi Édouard, >>> >>> We have the GAE driver that used to work, but that was more about >>> configuring a single-threaded executor and some other http related stuff. >>> >>> As far as I know, the GAE support has been untested for several >>> releases, as I believe the community is not using it, but it is good to >>> have a real use case! >>> >>> I haven't seen reflection restrictions before, but I'm not a GAE user, >>> so I don't know the details and its limitations. Looking at the >>> stacktrace, it seems that the failure happens when trying to build the >>> deserialization context. jclouds uses Gson to deserialize the API >>> responses, and it uses reflection to make sure it will be able to build the >>> corresponding Java object, by making all the constructors accessible. >>> >>> This seems to be not allowed in GAE, and we could try to configure the >>> GAE module to "disable" that reflection, and use only the visible >>> constructor. However, this has been out there since 2013 and I'm not sure >>> if working only with the visible constructors would be compatible with the >>> current domain model of all providers. >>> >>> In any case, it is worth giving it a try. Mind opening a JIRA [1] issue >>> so we can properly track this? >>> >>> Thanks! >>> >>> I. >>> >>> [1] https://issues.apache.org/jira/browse/jclouds >>> >>> On 2 March 2015 at 22:16, Édouard Mercier sur Gmail < >>> [email protected]> wrote: >>> >>>> Hello. >>>> >>>> I've been digging a long time, both using the v1.8.1 and the >>>> v2.0.0-SNAPSHOT, and found no way to jclouds BlobStore to work on the >>>> current GAE Java flavor v1.9.18. >>>> >>>> When attempting to use the "BlobStore.putBlob()" method, I get this >>>> >>>> """ >>>> java.lang.SecurityException: java.lang.IllegalAccessException: >>>> Reflection is not allowed on java.lang.String(int,int,char[]) >>>> at com.google.appengine.runtime.Request.process- >>>> 6c82fef5146f94d9(Request.java) >>>> at java.lang.reflect.Constructor.setAccessible(Constructor.java:40) >>>> at org.jclouds.reflect.Reflection2$1.load(Reflection2.java:156) >>>> at org.jclouds.reflect.Reflection2$1.load(Reflection2.java:152) >>>> at com.google.common.cache.LocalCache$LoadingValueReference. >>>> loadFuture(LocalCache.java:3527) >>>> at com.google.common.cache.LocalCache$Segment.loadSync( >>>> LocalCache.java:2319) >>>> at com.google.common.cache.LocalCache$Segment. >>>> lockedGetOrLoad(LocalCache.java:2282) >>>> at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2197) >>>> at com.google.common.cache.LocalCache.get(LocalCache.java:3937) >>>> at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941) >>>> at com.google.common.cache.LocalCache$LocalLoadingCache. >>>> get(LocalCache.java:4824) >>>> at org.jclouds.reflect.Reflection2.get(Reflection2.java:345) >>>> at org.jclouds.reflect.Reflection2.constructors(Reflection2.java:99) >>>> at org.jclouds.json.internal.NamingStrategies$ >>>> AnnotationConstructorNamingStrategy.getDeserializer( >>>> NamingStrategies.java:248) >>>> at org.jclouds.json.internal.DeserializationConstructorAndR >>>> eflectiveTypeAdapterFactory.create(DeserializationConstructorAndR >>>> eflectiveTypeAdapterFactory.java:122) >>>> at com.google.gson.Gson.getAdapter(Gson.java:358) >>>> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory. >>>> getFieldAdapter(ReflectiveTypeAdapterFactory.java:109) >>>> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory. >>>> access$100(ReflectiveTypeAdapterFactory.java:46) >>>> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>( >>>> ReflectiveTypeAdapterFactory.java:84) >>>> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory. >>>> createBoundField(ReflectiveTypeAdapterFactory.java:83) >>>> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory. >>>> getBoundFields(ReflectiveTypeAdapterFactory.java:129) >>>> at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create( >>>> ReflectiveTypeAdapterFactory.java:75) >>>> at com.google.gson.Gson.getAdapter(Gson.java:358) >>>> at com.google.gson.Gson.toJson(Gson.java:587) >>>> at com.google.gson.Gson.toJson(Gson.java:574) >>>> at com.google.gson.Gson.toJson(Gson.java:529) >>>> at com.google.gson.Gson.toJson(Gson.java:509) >>>> at org.jclouds.json.internal.GsonWrapper.toJson(GsonWrapper.java:52) >>>> at org.jclouds.googlecloudstorage.binders.MultipartUploadBinder. >>>> bindToRequest(MultipartUploadBinder.java:53) >>>> at org.jclouds.rest.internal.RestAnnotationProcessor.apply( >>>> RestAnnotationProcessor.java:324) >>>> at org.jclouds.rest.internal.RestAnnotationProcessor.apply( >>>> RestAnnotationProcessor.java:129) >>>> at org.jclouds.rest.internal.InvokeHttpMethod.toCommand( >>>> InvokeHttpMethod.java:188) >>>> at org.jclouds.rest.internal.InvokeHttpMethod.invoke( >>>> InvokeHttpMethod.java:84) >>>> at org.jclouds.rest.internal.InvokeHttpMethod.apply( >>>> InvokeHttpMethod.java:73) >>>> at org.jclouds.rest.internal.InvokeHttpMethod.apply( >>>> InvokeHttpMethod.java:44) >>>> at org.jclouds.reflect.FunctionalReflection$ >>>> FunctionalInvocationHandler.handleInvocation( >>>> FunctionalReflection.java:117) >>>> at com.google.common.reflect.AbstractInvocationHandler.invoke( >>>> AbstractInvocationHandler.java:87) >>>> at com.sun.proxy.$Proxy62.multipartUpload(Unknown Source) >>>> at org.jclouds.googlecloudstorage.blobstore. >>>> GoogleCloudStorageBlobStore.putBlob(GoogleCloudStorageBlobStore. >>>> java:224) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke( >>>> NativeMethodAccessorImpl.java:57) >>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke( >>>> DelegatingMethodAccessorImpl.java:43) >>>> at java.lang.reflect.Method.invoke(Method.java:45) >>>> at com.google.inject.internal.DelegatingInvocationHandler.invoke( >>>> DelegatingInvocationHandler.java:37) >>>> at com.sun.proxy.$Proxy60.putBlob(Unknown Source) >>>> """ >>>> >>>> exception (this one was caused using jclouds v2.0.0-SNAPSHOT). >>>> >>>> I've seen that there has been initiatives to have jclouds working on >>>> the GAE in the past, but would like to know if this is still on the >>>> roadmap. Any help which shows how to have jclouds BlobStore working on >>>> GAE is very welcome. >>>> >>>> Thank you for your support. Regards, >>>> Édouard >>>> >>> >>> >>
