[ https://issues.apache.org/jira/browse/JCLOUDS-957?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Andrew Gaul resolved JCLOUDS-957. --------------------------------- Resolution: Fixed Fix Version/s: 2.0.0 65b7bdf282ff53a76a70fcfbb9be85ebc09a0f57 > openstack-swift provider throws different exceptions for copyBlob > ----------------------------------------------------------------- > > Key: JCLOUDS-957 > URL: https://issues.apache.org/jira/browse/JCLOUDS-957 > Project: jclouds > Issue Type: Bug > Components: jclouds-blobstore > Affects Versions: 1.9.0 > Reporter: Ka-Hing Cheung > Assignee: Zack Shoylev > Labels: openstack-swift > Fix For: 2.0.0 > > > S3 and LocalBlobStore both throw KeyNotFoundException if copyBlob is called with an non-existent source key, but openstack-swift throws different exceptions depends on how copyBlob is used. > {code:java} > @Test(groups = { "integration", "live" }) > public void testCopy404Blob() throws Exception { > BlobStore blobStore = view.getBlobStore(); > String container = getContainerName(); > try { > blobStore.copyBlob(container, "blob", container, "blob2", CopyOptions.NONE); > } catch (KeyNotFoundException e) { > } finally { > returnContainer(container); > } > } > @Test(groups = { "integration", "live" }) > public void testCopy404BlobMeta() throws Exception { > BlobStore blobStore = view.getBlobStore(); > String container = getContainerName(); > try { > blobStore.copyBlob(container, "blob", container, "blob2", > CopyOptions.builder().userMetadata(ImmutableMap.of("x", "1")).build()); > } catch (KeyNotFoundException e) { > } finally { > returnContainer(container); > } > } > {code} > The first test throws NullPointerException: > {code} > java.lang.NullPointerException: null > at org.jclouds.openstack.swift.v1.blobstore.RegionScopedSwiftBlobStore.copyBlob(RegionScopedSwiftBlobStore.java:287) > at org.jclouds.blobstore.integration.internal.BaseBlobIntegrationTest.testCopy404Blob(BaseBlobIntegrationTest.java:992) > {code} > whereas the latter throws a swift specific exception: > {code} > org.jclouds.openstack.swift.v1.CopyObjectException: Either the source path '/khc-blobstore0/blob' or the destination path '/khc-blobstore0/blob2' was not found. (message:

Not Found

The resource could not be found.

) > at org.jclouds.openstack.swift.v1.handlers.SwiftErrorHandler.handleError(SwiftErrorHandler.java:64) > at org.jclouds.http.handlers.DelegatingErrorHandler.handleError(DelegatingErrorHandler.java:65) > at org.jclouds.http.internal.BaseHttpCommandExecutorService.shouldContinue(BaseHttpCommandExecutorService.java:136) > at org.jclouds.http.internal.BaseHttpCommandExecutorService.invoke(BaseHttpCommandExecutorService.java:105) > at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90) > 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.$Proxy73.copy(Unknown Source) > at org.jclouds.openstack.swift.v1.blobstore.RegionScopedSwiftBlobStore.copyBlob(RegionScopedSwiftBlobStore.java:307) > at org.jclouds.blobstore.integration.internal.BaseBlobIntegrationTest.testCopy404BlobMeta(BaseBlobIntegrationTest.java:1004) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)