我正在将我的Google App Engine应用程序从BlobStore移植到Google Cloud Store。
我发现在GAE SDK 1.9.7中,他们弃用了所有.getServingURL()
方法BlobKey
并将其替换为on ServingUrlOptions
对象作为配置。
这很有道理并且似乎有效,但似乎没有任何匹配.deleteServingUrl()
需要GcsFilename
?
我在SdkReleaseNotes中发现了以下内容,但它并没有说明你实际上是如何做到这一点的?
版本1.7.0 - 2012年6月26日
- 您现在可以将get_serving_url()和delete_serving_url()用于Google云端存储分区。
ImagesService
javadoc中似乎没有任何内容可以帮助您完成工作。
答案 0 :(得分:0)
经过多次挖掘JavaDocs后,我发现:
BlobKey createGsBlobKey(java.lang.String filename)
import com.google.appengine.api.blobstore.BlobKey;
import com.google.appengine.api.blobstore.BlobstoreService;
import com.google.appengine.api.blobstore.BlobstoreServiceFactory;
import com.google.appengine.api.images.ImagesService;
import com.google.appengine.api.images.ImagesServiceFactory;
import com.googlecode.objectify.Work;
import com.vertigrated.gae.codex.service.datastore.entity.ImageMetadata;
import javax.annotation.Nonnull;
import java.util.UUID;
import static com.googlecode.objectify.ObjectifyService.ofy;
private static final BlobstoreService BLOBSTORE_SERVICE;
private static final ImagesService IMAGES_SERVICE;
static
{
BLOBSTORE_SERVICE = BlobstoreServiceFactory.getBlobstoreService();
IMAGES_SERVICE = ImagesServiceFactory.getImagesService();
}
@Override
public boolean delete(@Nonnull final UUID uuid)
{
return ofy().transact(new Work<Boolean>()
{
@Override
public Boolean run()
{
final ImageMetadata im = ofy().load().type(ImageMetadata.class).id(uuid.toString()).now();
final BlobKey bk = BLOBSTORE_SERVICE.createGsBlobKey(im.getFilename().toString());
IMAGES_SERVICE.deleteServingUrl(bk);
ofy().delete().entity(im);
return ImageMetadataEntityService.this.delete(uuid);
}
});
}