Skip to content

Commit 2e2cfcb

Browse files
authored
replace byte[] with inputStream (#101)
1 parent 96463f8 commit 2e2cfcb

8 files changed

Lines changed: 30 additions & 27 deletions

File tree

src/main/java/org/mifos/processor/bulk/HealthCheck.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.fasterxml.jackson.databind.ObjectMapper;
77
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
88
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
9+
import java.io.InputStream;
910
import java.util.UUID;
1011
import org.apache.camel.Exchange;
1112
import org.apache.camel.LoggingLevel;
@@ -61,11 +62,11 @@ public void configure() {
6162
exchange.setProperty(BATCH_ID, batchId);
6263

6364
// TODO: How to get sender information? Hard coded in Channel connector?
64-
byte[] csvFile = fileTransferService.downloadFile(fileName, bucketName);
65+
InputStream csvFileInputStream = fileTransferService.streamFile(fileName, bucketName);
6566

6667
CsvSchema schema = CsvSchema.emptySchema().withHeader();
6768
MappingIterator<TransactionOlder> readValues = csvMapper.readerWithSchemaFor(TransactionOlder.class).with(schema)
68-
.readValues(csvFile);
69+
.readValues(csvFileInputStream);
6970

7071
while (readValues.hasNext()) {
7172
TransactionOlder current = readValues.next();

src/main/java/org/mifos/processor/bulk/api/ApiOriginFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
2222
HttpServletRequest req = (HttpServletRequest) request;
2323
String tenant = req.getHeader("Platform-TenantId");
2424
logger.debug("Tenant Name is : {}", tenant);
25-
logger.info("Client IP Address: {}",req.getRemoteHost());
25+
logger.info("Client IP Address: {}", req.getRemoteHost());
2626
}
2727

2828
}

src/main/java/org/mifos/processor/bulk/camel/routes/FileRoute.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.io.File;
77
import java.io.FileOutputStream;
8+
import java.io.InputStream;
89
import org.mifos.processor.bulk.file.FileTransferService;
910
import org.springframework.beans.factory.annotation.Autowired;
1011
import org.springframework.beans.factory.annotation.Qualifier;
@@ -31,10 +32,10 @@ public void configure() throws Exception {
3132
from("direct:download-file").id("direct:download-file").log("Started download-file route").process(exchange -> {
3233
String filename = exchange.getProperty(SERVER_FILE_NAME, String.class);
3334

34-
byte[] csvFile = fileTransferService.downloadFile(filename, bucketName);
35+
InputStream csvFileInputStream = fileTransferService.streamFile(filename, bucketName);
3536
File file = new File(filename);
3637
try (FileOutputStream fos = new FileOutputStream(file)) {
37-
fos.write(csvFile);
38+
fos.write(csvFileInputStream.read());
3839
}
3940
exchange.setProperty(LOCAL_FILE_PATH, file.getAbsolutePath());
4041
logger.info("File downloaded");

src/main/java/org/mifos/processor/bulk/camel/routes/HealthRoute.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@ public class HealthRoute extends BaseRouteBuilder {
1010
public void configure() throws Exception {
1111

1212
// todo remove once camel APIs are migrated to spring
13-
from("rest:GET:/actuator/health/liveness")
14-
.id("rest:GET:/actuator/health/liveness")
15-
.setBody(exchange -> new JSONObject(){{ put("status", "UP"); }}.toString());
13+
from("rest:GET:/actuator/health/liveness").id("rest:GET:/actuator/health/liveness").setBody(exchange -> new JSONObject() {
14+
15+
{
16+
put("status", "UP");
17+
}
18+
}.toString());
1619
}
1720
}

src/main/java/org/mifos/processor/bulk/file/AwsFileTransferImpl.java

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
import com.amazonaws.services.s3.model.PutObjectRequest;
55
import com.amazonaws.services.s3.model.S3Object;
66
import com.amazonaws.services.s3.model.S3ObjectInputStream;
7-
import com.amazonaws.util.IOUtils;
87
import java.io.File;
98
import java.io.FileOutputStream;
109
import java.io.IOException;
10+
import java.io.InputStream;
1111
import org.slf4j.Logger;
1212
import org.slf4j.LoggerFactory;
1313
import org.springframework.beans.factory.annotation.Autowired;
@@ -41,16 +41,10 @@ public String uploadFile(File file, String bucketName) {
4141
}
4242

4343
@Override
44-
public byte[] downloadFile(String fileName, String bucketName) {
44+
public InputStream streamFile(String fileName, String bucketName) {
4545
S3Object s3Object = s3Client.getObject(bucketName, fileName);
4646
S3ObjectInputStream inputStream = s3Object.getObjectContent();
47-
try {
48-
byte[] content = IOUtils.toByteArray(inputStream);
49-
return content;
50-
} catch (IOException e) {
51-
e.printStackTrace();
52-
}
53-
return null;
47+
return inputStream;
5448
}
5549

5650
@Override

src/main/java/org/mifos/processor/bulk/file/AzureFileTransferImpl.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package org.mifos.processor.bulk.file;
22

33
import com.azure.storage.blob.BlobClientBuilder;
4-
import com.azure.storage.blob.models.BlobProperties;
54
import java.io.File;
65
import java.io.IOException;
6+
import java.io.InputStream;
77
import java.nio.file.Files;
8-
import java.nio.file.Paths;
8+
9+
import com.azure.storage.blob.specialized.BlobInputStream;
910
import org.slf4j.Logger;
1011
import org.slf4j.LoggerFactory;
1112
import org.springframework.beans.factory.annotation.Autowired;
@@ -51,13 +52,13 @@ public String uploadFile(File file, String bucketName) {
5152
}
5253

5354
@Override
54-
public byte[] downloadFile(String fileName, String bucketName) {
55+
public InputStream streamFile(String fileName, String bucketName) {
5556
try {
5657
File temp = new File("/temp/" + fileName);
57-
BlobProperties properties = client.containerName(bucketName).blobName(fileName).buildClient().downloadToFile(temp.getPath());
58-
byte[] content = Files.readAllBytes(Paths.get(temp.getPath()));
59-
temp.delete();
60-
return content;
58+
BlobInputStream csvInputStream = client.containerName(bucketName).blobName(fileName).buildClient().openInputStream();
59+
// byte[] content = Files.Paths.get(temp.getPath()));
60+
// temp.delete();
61+
return csvInputStream;
6162
} catch (Exception e) {
6263
e.printStackTrace();
6364
}
@@ -68,4 +69,5 @@ public byte[] downloadFile(String fileName, String bucketName) {
6869
public void deleteFile(String fileName, String bucketName) {
6970
client.containerName(bucketName).blobName(fileName).buildClient().delete();
7071
}
72+
7173
}

src/main/java/org/mifos/processor/bulk/file/FileTransferService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.mifos.processor.bulk.file;
22

33
import java.io.File;
4+
import java.io.InputStream;
45
import org.springframework.stereotype.Service;
56
import org.springframework.web.multipart.MultipartFile;
67

@@ -11,7 +12,7 @@ public interface FileTransferService {
1112

1213
String uploadFile(File file, String bucketName);
1314

14-
byte[] downloadFile(String fileName, String bucketName);
15+
InputStream streamFile(String fileName, String bucketName);
1516

1617
void deleteFile(String fileName, String bucketName);
1718

src/main/java/org/mifos/processor/bulk/zeebe/ZeebeWorkers.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
1010
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
1111
import io.camunda.zeebe.client.ZeebeClient;
12+
import java.io.InputStream;
1213
import java.util.Map;
1314
import org.apache.camel.CamelContext;
1415
import org.apache.camel.Exchange;
@@ -70,10 +71,10 @@ private void workerBulkProcessor() {
7071
String fileName = (String) variables.get("fileName");
7172

7273
// TODO: How to get sender information? Hard coded in Channel connector?
73-
byte[] csvFile = fileTransferService.downloadFile(fileName, bucketName);
74+
InputStream csvFileInputStream = fileTransferService.streamFile(fileName, bucketName);
7475

7576
CsvSchema schema = CsvSchema.emptySchema().withHeader();
76-
MappingIterator<Transaction> readValues = csvMapper.readerWithSchemaFor(Transaction.class).with(schema).readValues(csvFile);
77+
MappingIterator<Transaction> readValues = csvMapper.readerWithSchemaFor(Transaction.class).with(schema).readValues(csvFileInputStream);
7778

7879
/*
7980
* while (readValues.hasNext()) { Transaction current = readValues.next(); current.setBatchId(batchId); if

0 commit comments

Comments
 (0)