You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by am...@apache.org on 2018/08/27 20:30:53 UTC
atlas git commit: ATLAS-2843: AtlasClient updates for exportData and
importData.
Repository: atlas
Updated Branches:
refs/heads/branch-0.8 4dcb2c7bf -> 29de3b3b8
ATLAS-2843: AtlasClient updates for exportData and importData.
Project: http://git-wip-us.apache.org/repos/asf/atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/atlas/commit/29de3b3b
Tree: http://git-wip-us.apache.org/repos/asf/atlas/tree/29de3b3b
Diff: http://git-wip-us.apache.org/repos/asf/atlas/diff/29de3b3b
Branch: refs/heads/branch-0.8
Commit: 29de3b3b845d881043c4cd149f3aba7eea9dba20
Parents: 4dcb2c7
Author: Ashutosh Mestry <am...@hortonworks.com>
Authored: Mon Aug 27 10:32:19 2018 -0700
Committer: Ashutosh Mestry <am...@hortonworks.com>
Committed: Mon Aug 27 10:32:19 2018 -0700
----------------------------------------------------------------------
.../java/org/apache/atlas/AtlasBaseClient.java | 28 ++++++++++++--------
.../web/resources/AdminExportImportTestIT.java | 19 +++++++------
2 files changed, 26 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/atlas/blob/29de3b3b/client/common/src/main/java/org/apache/atlas/AtlasBaseClient.java
----------------------------------------------------------------------
diff --git a/client/common/src/main/java/org/apache/atlas/AtlasBaseClient.java b/client/common/src/main/java/org/apache/atlas/AtlasBaseClient.java
index a529380..d6d2057 100644
--- a/client/common/src/main/java/org/apache/atlas/AtlasBaseClient.java
+++ b/client/common/src/main/java/org/apache/atlas/AtlasBaseClient.java
@@ -57,10 +57,10 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriBuilder;
-import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.io.OutputStream;
import java.net.ConnectException;
import java.nio.file.Paths;
@@ -375,7 +375,7 @@ public abstract class AtlasBaseClient {
}
try {
if(api.getProduces().equals(MediaType.APPLICATION_OCTET_STREAM)) {
- return (T) IOUtils.toByteArray(clientResponse.getEntityInputStream());
+ return (T) clientResponse.getEntityInputStream();
} else if (responseType.getRawClass().equals(JSONObject.class)) {
String stringEntity = clientResponse.getEntity(String.class);
try {
@@ -394,8 +394,6 @@ public abstract class AtlasBaseClient {
}
} catch (ClientHandlerException e) {
throw new AtlasServiceException(api, e);
- } catch (IOException e) {
- throw new AtlasServiceException(api, e);
}
} else if (clientResponse.getStatus() != ClientResponse.Status.SERVICE_UNAVAILABLE.getStatusCode()) {
break;
@@ -457,9 +455,9 @@ public abstract class AtlasBaseClient {
return configuration.getInt(AtlasBaseClient.ATLAS_CLIENT_HA_RETRIES_KEY, AtlasBaseClient.DEFAULT_NUM_RETRIES);
}
- public byte[] exportData(AtlasExportRequest request) throws AtlasServiceException {
+ public InputStream exportData(AtlasExportRequest request) throws AtlasServiceException {
try {
- return (byte[]) callAPI(EXPORT, Object.class, request);
+ return (InputStream) callAPI(EXPORT, Object.class, request);
} catch (Exception e) {
LOG.error("error writing to file", e);
throw new AtlasServiceException(e);
@@ -469,14 +467,22 @@ public abstract class AtlasBaseClient {
public void exportData(AtlasExportRequest request, String absolutePath) throws AtlasServiceException {
OutputStream fileOutputStream = null;
try {
- byte[] fileBytes = exportData(request);
+ InputStream inputStream = exportData(request);
fileOutputStream = new FileOutputStream(new File(absolutePath));
- IOUtils.write(fileBytes, fileOutputStream);
+ byte[] buffer = new byte[8 * 1024];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ fileOutputStream.write(buffer, 0, bytesRead);
+ }
+
+ IOUtils.closeQuietly(inputStream);
+ IOUtils.closeQuietly(fileOutputStream);
+
} catch (Exception e) {
LOG.error("error writing to file", e);
throw new AtlasServiceException(e);
} finally {
- if(fileOutputStream != null) {
+ if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (IOException e) {
@@ -492,9 +498,9 @@ public abstract class AtlasBaseClient {
new FileDataBodyPart(IMPORT_DATA_PARAMETER, new File(absoluteFilePath)));
}
- public AtlasImportResult importData(AtlasImportRequest request, byte[] fileData) throws AtlasServiceException {
+ public AtlasImportResult importData(AtlasImportRequest request, InputStream stream) throws AtlasServiceException {
return performImportData(getImportRequestBodyPart(request),
- new StreamDataBodyPart(IMPORT_DATA_PARAMETER, new ByteArrayInputStream(fileData)));
+ new StreamDataBodyPart(IMPORT_DATA_PARAMETER, stream));
}
private AtlasImportResult performImportData(BodyPart requestPart, BodyPart filePart) throws AtlasServiceException {
http://git-wip-us.apache.org/repos/asf/atlas/blob/29de3b3b/webapp/src/test/java/org/apache/atlas/web/resources/AdminExportImportTestIT.java
----------------------------------------------------------------------
diff --git a/webapp/src/test/java/org/apache/atlas/web/resources/AdminExportImportTestIT.java b/webapp/src/test/java/org/apache/atlas/web/resources/AdminExportImportTestIT.java
index cc5d36b..d156054 100644
--- a/webapp/src/test/java/org/apache/atlas/web/resources/AdminExportImportTestIT.java
+++ b/webapp/src/test/java/org/apache/atlas/web/resources/AdminExportImportTestIT.java
@@ -32,15 +32,13 @@ import org.testng.SkipException;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
-import java.io.ByteArrayInputStream;
+import java.io.FileInputStream;
import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
+import java.io.InputStream;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
public class AdminExportImportTestIT extends BaseResourceIT {
@@ -69,10 +67,10 @@ public class AdminExportImportTestIT extends BaseResourceIT {
final int EXPECTED_CREATION_ORDER_SIZE = 10;
AtlasExportRequest request = TestResourceFileUtils.readObjectFromJson(".", EXPORT_REQUEST_FILE, AtlasExportRequest.class);
- byte[] exportedBytes = atlasClientV2.exportData(request);
- assertNotNull(exportedBytes);
+ InputStream exportedStream = atlasClientV2.exportData(request);
+ assertNotNull(exportedStream);
- ZipSource zs = new ZipSource(new ByteArrayInputStream(exportedBytes));
+ ZipSource zs = new ZipSource(exportedStream);
assertNotNull(zs.getExportResult());
assertTrue(zs.getCreationOrder().size() > EXPECTED_CREATION_ORDER_SIZE);
}
@@ -87,14 +85,15 @@ public class AdminExportImportTestIT extends BaseResourceIT {
private void performImport(String fileToImport, AtlasImportRequest request) throws AtlasServiceException {
- byte[] fileBytes = new byte[0];
+ FileInputStream fileInputStream = null;
+
try {
- fileBytes = Files.readAllBytes(Paths.get(TestResourceFileUtils.getTestFilePath(fileToImport)));
+ fileInputStream = new FileInputStream(TestResourceFileUtils.getTestFilePath(fileToImport));
} catch (IOException e) {
assertFalse(true, "Exception: " + e.getMessage());
}
- AtlasImportResult result = atlasClientV2.importData(request, fileBytes);
+ AtlasImportResult result = atlasClientV2.importData(request, fileInputStream);
assertNotNull(result);
assertEquals(result.getOperationStatus(), AtlasImportResult.OperationStatus.SUCCESS);
assertNotNull(result.getMetrics());