use of com.obs.services.exception.ObsException in project onex-boot by zhangchaoxu.
the class HuaweiCloudOssService method download.
@Override
public InputStream download(String objectKey) {
ObsClient ossClient = null;
ObsObject ossObject = null;
try {
ossClient = new ObsClient(config.getAccessKeyId(), config.getAccessKeySecret(), config.getEndPoint());
ossObject = ossClient.getObject(config.getBucketName(), objectKey);
return ossObject.getObjectContent();
} catch (ObsException e) {
throw new OnexException(ErrorCode.OSS_UPLOAD_FILE_ERROR, e);
} finally {
// ObsClient在调用ObsClient.close方法关闭后不能再次使用
if (ossClient != null) {
try {
ossClient.close();
} catch (IOException e) {
log.error("huaweicloud obs client close error", e);
}
}
}
}
use of com.obs.services.exception.ObsException in project alluxio by Alluxio.
the class OBSInputStream method createStream.
@Override
protected InputStream createStream(long startPos, long endPos) throws IOException {
GetObjectRequest req = new GetObjectRequest(mBucketName, mKey);
req.setRangeStart(startPos);
req.setRangeEnd(endPos < mContentLength ? endPos - 1 : mContentLength - 1);
ObsException lastException = null;
while (mRetryPolicy.attempt()) {
try {
ObsObject obj = mObsClient.getObject(req);
return new BufferedInputStream(obj.getObjectContent());
} catch (ObsException e) {
System.out.println(e.getResponseCode());
LOG.warn("Attempt {} to open key {} in bucket {} failed with exception : {}", mRetryPolicy.getAttemptCount(), mKey, mBucketName, e.toString());
if (e.getResponseCode() != HttpStatus.SC_NOT_FOUND) {
throw new IOException(e);
}
// Key does not exist
lastException = e;
}
}
// Failed after retrying key does not exist
throw new IOException(lastException);
}
use of com.obs.services.exception.ObsException in project alluxio by Alluxio.
the class OBSOutputStreamTest method testCloseError.
/**
* Tests to ensure IOException is thrown if
* {@link ObsClient#putObject(String, String, InputStream, ObjectMetadata)} throws an
* {@link ObsException}.
*/
@Test
@PrepareForTest(OBSOutputStream.class)
public void testCloseError() throws Exception {
String errorMessage = "Invoke the createEmptyObject method error.";
BufferedInputStream inputStream = PowerMockito.mock(BufferedInputStream.class);
PowerMockito.whenNew(BufferedInputStream.class).withArguments(Mockito.any(FileInputStream.class)).thenReturn(inputStream);
PowerMockito.when(mObsClient.putObject(Mockito.anyString(), Mockito.anyString(), Mockito.any(InputStream.class), Mockito.any(ObjectMetadata.class))).thenThrow(new ObsException(errorMessage));
OBSOutputStream stream = new OBSOutputStream("testBucketName", "testKey", mObsClient, sConf.getList(PropertyKey.TMP_DIRS));
mThrown.expect(IOException.class);
mThrown.expectMessage(errorMessage);
stream.close();
}
Aggregations