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

pvillard pushed a commit to branch support/nifi-1.x
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/support/nifi-1.x by this push:
     new bb52b839a4 NIFI-12888 In AbstractEmailProcessor check for expired 
oauth2 token when determining whether mail receiver needs to be recreated.
bb52b839a4 is described below

commit bb52b839a4ff0425fa0d65c517fc7ce7441e264f
Author: tpalfy <[email protected]>
AuthorDate: Mon Mar 11 15:31:11 2024 +0100

    NIFI-12888 In AbstractEmailProcessor check for expired oauth2 token when 
determining whether mail receiver needs to be recreated.
    
    Signed-off-by: Pierre Villard <[email protected]>
    
    This closes #8494.
---
 .../nifi/processors/email/AbstractEmailProcessor.java      | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git 
a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/AbstractEmailProcessor.java
 
b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/AbstractEmailProcessor.java
index a8b2cf0dbc..4c35ddc5a1 100644
--- 
a/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/AbstractEmailProcessor.java
+++ 
b/nifi-nar-bundles/nifi-email-bundle/nifi-email-processors/src/main/java/org/apache/nifi/processors/email/AbstractEmailProcessor.java
@@ -22,6 +22,7 @@ import org.apache.nifi.components.AllowableValue;
 import org.apache.nifi.components.PropertyDescriptor;
 import org.apache.nifi.expression.ExpressionLanguageScope;
 import org.apache.nifi.flowfile.FlowFile;
+import org.apache.nifi.oauth2.AccessToken;
 import org.apache.nifi.oauth2.OAuth2AccessTokenProvider;
 import org.apache.nifi.processor.AbstractProcessor;
 import org.apache.nifi.processor.ProcessContext;
@@ -199,13 +200,14 @@ abstract class AbstractEmailProcessor<T extends 
AbstractMailReceiver> extends Ab
     private volatile boolean shouldSetDeleteFlag;
 
     protected volatile Optional<OAuth2AccessTokenProvider> 
oauth2AccessTokenProviderOptional;
+    protected volatile AccessToken oauth2AccessDetails;
 
     @OnScheduled
     public void onScheduled(final ProcessContext context) {
         if (context.getProperty(OAUTH2_ACCESS_TOKEN_PROVIDER).isSet()) {
             OAuth2AccessTokenProvider oauth2AccessTokenProvider = 
context.getProperty(OAUTH2_ACCESS_TOKEN_PROVIDER).asControllerService(OAuth2AccessTokenProvider.class);
 
-            oauth2AccessTokenProvider.getAccessDetails();
+            oauth2AccessDetails = oauth2AccessTokenProvider.getAccessDetails();
 
             oauth2AccessTokenProviderOptional = 
Optional.of(oauth2AccessTokenProvider);
         } else {
@@ -326,7 +328,7 @@ abstract class AbstractEmailProcessor<T extends 
AbstractMailReceiver> extends Ab
      * and is ready to receive messages.
      */
     private synchronized void initializeIfNecessary(ProcessContext context, 
ProcessSession processSession) {
-        if (this.messageReceiver == null) {
+        if (this.messageReceiver == null || isOauth2AccessDetailsRefreshed()) {
             this.processSession = processSession;
             this.messageReceiver = this.buildMessageReceiver(context);
 
@@ -343,6 +345,14 @@ abstract class AbstractEmailProcessor<T extends 
AbstractMailReceiver> extends Ab
         }
     }
 
+    private boolean isOauth2AccessDetailsRefreshed() {
+        boolean oauthDetailsRefreshed = 
this.oauth2AccessTokenProviderOptional.isPresent()
+                &&
+                (this.oauth2AccessDetails == null || 
!oauth2AccessDetails.equals(this.oauth2AccessTokenProviderOptional.get().getAccessDetails()));
+
+        return oauthDetailsRefreshed;
+    }
+
     /**
      * Extracts dynamic properties which typically represent the Java Mail
      * properties from the {@link ProcessContext} returning them as instance of

Reply via email to