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 <[email protected]>
Authored: Mon Aug 27 10:32:19 2018 -0700
Committer: Ashutosh Mestry <[email protected]>
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());

Reply via email to