I was trying to upload a file from GAE to Google Docs with the ResumableHttpFileUploader and setData method instead of setFile method because of the GAE limitation writing files and I get security related error. Anyone know why? or if there is a work around?
FileUploadProgressListener listener = new FileUploadProgressListener();
ExecutorService executor = Executors.newFixedThreadPool(MAX_CONCURRENT_UPLOADS);
ResumableHttpFileUploader.Builder builder = new ResumableHttpFileUploader.Builder();
builder.setExecutorService(executor);
builder.setChunkSize(DEFAULT_CHUNK_SIZE);
builder.setProgressListener(listener);
builder.setUrl(uri);
com.google.gdata.client.uploader.ByteArrayUploadData uploadData =
new com.google.gdata.client.uploader.ByteArrayUploadData(file.getBytes("UTF-8"));
builder.setData(uploadData);
ResumableHttpFileUploader uploader = builder.build();
listener.listenTo(uploader);
uploader.start();
// wait for uploads to complete
while (!listener.isDone()) {
try {
Thread.sleep(100);
} catch (InterruptedException ie) {
listener.printResults();
throw ie; // rethrow
}
}
// print upload results
listener.printResults();
---
java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup)
[java] at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
[java] at java.security.AccessController.checkPermission(AccessController.java:546)
[java] at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
[java] at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:166)
[java] at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:191)
[java] at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:299)
[java] at java.lang.Thread.init(Thread.java:336)
[java] at java.lang.Thread.<init>(Thread.java:422)
[java] at java.util.TimerThread.<init>(Timer.java:456)
[java] at java.util.Timer.<init>(Timer.java:71)
[java] at java.util.Timer.<init>(Timer.java:106)
[java] at com.google.gdata.client.uploader.ResumableHttpFileUploader.upload(ResumableHttpFileUploader.java:738)
[java] at com.google.gdata.client.uploader.ResumableHttpFileUploader.start(ResumableHttpFileUploader.java:624)