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());
