You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by jo...@apache.org on 2020/08/10 17:11:55 UTC

[nifi] 02/02: NIFI-7338 This closes #4169. Added comment about com.hierynomus.smbj.SMBClient syncronicity

This is an automated email from the ASF dual-hosted git repository.

joewitt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git

commit 51091a5fca8dde3116c46e3135de14c658140c1e
Author: bibistroc <ma...@gbarbu.eu>
AuthorDate: Wed Aug 5 12:17:21 2020 +0300

    NIFI-7338 This closes #4169. Added comment about com.hierynomus.smbj.SMBClient syncronicity
    
    - added file.size attribute on GetSmbFile
    
    Signed-off-by: Joe Witt <jo...@apache.org>
---
 .../src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java    | 5 ++++-
 .../src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java    | 2 +-
 .../test/java/org/apache/nifi/processors/smb/GetSmbFileTest.java    | 6 ++++++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java
index 0aac011..f7caa21 100644
--- a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java
+++ b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/GetSmbFile.java
@@ -203,6 +203,7 @@ public class GetSmbFile extends AbstractProcessor {
     public static final String FILE_CREATION_TIME_ATTRIBUTE = "file.creationTime";
     public static final String FILE_LAST_MODIFY_TIME_ATTRIBUTE = "file.lastModifiedTime";
     public static final String FILE_LAST_ACCESS_TIME_ATTRIBUTE = "file.lastAccessTime";
+    public static final String FILE_SIZE_ATTRIBUTE = "file.size";
 
     public static final String FILE_MODIFY_DATE_ATTR_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ";
     final static DateFormat dateFormatter = new SimpleDateFormat(FILE_MODIFY_DATE_ATTR_FORMAT, Locale.US);
@@ -222,7 +223,7 @@ public class GetSmbFile extends AbstractProcessor {
 
     private final AtomicLong queueLastUpdated = new AtomicLong(0L);
 
-    private SMBClient smbClient = null;
+    private SMBClient smbClient = null; // this gets synchronized when the `connect` method is called
 
     private Pattern filePattern;
     private Pattern pathPattern;
@@ -468,6 +469,7 @@ public class GetSmbFile extends AbstractProcessor {
                             final long importMillis = TimeUnit.MILLISECONDS.convert(importNanos, TimeUnit.NANOSECONDS);
                             final FileAllInformation fileInfo = f.getFileInformation();
                             final FileBasicInformation fileBasicInfo = fileInfo.getBasicInformation();
+                            final long fileSize = fileInfo.getStandardInformation().getEndOfFile();
 
                             flowFile = session.putAttribute(flowFile, CoreAttributes.FILENAME.key(), filename);
                             flowFile = session.putAttribute(flowFile, CoreAttributes.PATH.key(), filePath);
@@ -475,6 +477,7 @@ public class GetSmbFile extends AbstractProcessor {
                             flowFile = session.putAttribute(flowFile, FILE_CREATION_TIME_ATTRIBUTE, dateFormatter.format(fileBasicInfo.getCreationTime().toDate()));
                             flowFile = session.putAttribute(flowFile, FILE_LAST_ACCESS_TIME_ATTRIBUTE, dateFormatter.format(fileBasicInfo.getLastAccessTime().toDate()));
                             flowFile = session.putAttribute(flowFile, FILE_LAST_MODIFY_TIME_ATTRIBUTE, dateFormatter.format(fileBasicInfo.getLastWriteTime().toDate()));
+                            flowFile = session.putAttribute(flowFile, FILE_SIZE_ATTRIBUTE, String.valueOf(fileSize));
                             flowFile = session.putAttribute(flowFile, HOSTNAME.getName(), hostname);
                             flowFile = session.putAttribute(flowFile, SHARE.getName(), shareName);
                             session.getProvenanceReporter().receive(flowFile, uri.toString(), importMillis);
diff --git a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java
index 64c528f..1d8a9e0 100644
--- a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java
+++ b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/main/java/org/apache/nifi/processors/smb/PutSmbFile.java
@@ -162,7 +162,7 @@ public class PutSmbFile extends AbstractProcessor {
 
     private Set<Relationship> relationships;
 
-    private SMBClient smbClient = null;
+    private SMBClient smbClient = null; // this gets synchronized when the `connect` method is called
     private Set<SMB2ShareAccess> sharedAccess;
 
     @Override
diff --git a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/test/java/org/apache/nifi/processors/smb/GetSmbFileTest.java b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/test/java/org/apache/nifi/processors/smb/GetSmbFileTest.java
index e9ab958..83b6ad3 100644
--- a/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/test/java/org/apache/nifi/processors/smb/GetSmbFileTest.java
+++ b/nifi-nar-bundles/nifi-smb-bundle/nifi-smb-processors/src/test/java/org/apache/nifi/processors/smb/GetSmbFileTest.java
@@ -21,6 +21,7 @@ import com.hierynomus.msfscc.FileAttributes;
 import com.hierynomus.msfscc.fileinformation.FileAllInformation;
 import com.hierynomus.msfscc.fileinformation.FileBasicInformation;
 import com.hierynomus.msfscc.fileinformation.FileIdBothDirectoryInformation;
+import com.hierynomus.msfscc.fileinformation.FileStandardInformation;
 import com.hierynomus.mssmb2.SMB2CreateDisposition;
 import com.hierynomus.smbj.SMBClient;
 import com.hierynomus.smbj.auth.AuthenticationContext;
@@ -120,8 +121,13 @@ public class GetSmbFileTest {
         FileAllInformation fileAllInfo = mock(FileAllInformation.class);
         FileTime fileTime = FileTime.ofEpochMillis(0);
         FileBasicInformation fileBasicInfo = new FileBasicInformation(fileTime, fileTime, fileTime, fileTime, 0);
+        FileStandardInformation fileStandardInformation = mock(FileStandardInformation.class);
+
         when(smbfile.getFileInformation()).thenReturn(fileAllInfo);
         when(fileAllInfo.getBasicInformation()).thenReturn(fileBasicInfo);
+        when(fileAllInfo.getStandardInformation()).thenReturn(fileStandardInformation);
+        when(fileStandardInformation.getEndOfFile()).thenReturn((long) 0);
+
         return fdInfo;
     }