You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tika.apache.org by nd...@apache.org on 2024/08/18 15:37:36 UTC

(tika) branch main updated: TIKA-4272: fix issue with ms graph fetcher config (#1905)

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 6df3b42c4 TIKA-4272: fix issue with ms graph fetcher config (#1905)
6df3b42c4 is described below

commit 6df3b42c428a3fbcb5c216f5bc4961bd7936df1f
Author: Nicholas DiPiazza <ni...@lucidworks.com>
AuthorDate: Sun Aug 18 10:37:31 2024 -0500

    TIKA-4272: fix issue with ms graph fetcher config (#1905)
    
    * TIKA-4272: fix issue with ms graph fetcher config
    
    * TIKA-4272: put back the shading
    
    ---------
    
    Co-authored-by: Nicholas DiPiazza <nd...@apache.org>
---
 .../tika-fetcher-microsoft-graph/pom.xml           | 44 +++++++++++++---------
 .../microsoftgraph/MicrosoftGraphFetcher.java      | 10 ++---
 .../config/AadCredentialConfigBase.java            | 23 +++--------
 .../config/ClientCertificateCredentialsConfig.java | 26 ++++++++++++-
 .../config/ClientSecretCredentialsConfig.java      | 26 ++++++++++++-
 .../config/MicrosoftGraphFetcherConfig.java        | 29 +++++++++-----
 .../microsoftgraph/MicrosoftGraphFetcherTest.java  |  7 ++--
 7 files changed, 109 insertions(+), 56 deletions(-)

diff --git a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/pom.xml b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/pom.xml
index 8ea120051..af920202a 100644
--- a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/pom.xml
+++ b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/pom.xml
@@ -17,7 +17,8 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <parent>
     <artifactId>tika-fetchers</artifactId>
     <groupId>org.apache.tika</groupId>
@@ -26,28 +27,32 @@
   <modelVersion>4.0.0</modelVersion>
 
   <artifactId>tika-fetcher-microsoft-graph</artifactId>
-  <name>Apache Tika Microsoft Graph Pipes Fetcher</name>
+  <name>Microsoft Graph Tika Pipes Fetcher</name>
 
   <properties>
+    <maven.compiler.source>11</maven.compiler.source>
+    <maven.compiler.target>11</maven.compiler.target>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <azure-identity.version>1.13.2</azure-identity.version>
     <microsoft-graph.version>6.13.0</microsoft-graph.version>
     <microsoft-kiota-serialization-json.version>1.1.1</microsoft-kiota-serialization-json.version>
     <wiremock.version>3.3.1</wiremock.version>
+    <mockito-junit-jupiter.version>5.12.0</mockito-junit-jupiter.version>
+    <nimbus-jose-jwt.version>9.40</nimbus-jose-jwt.version>
+    <msal4j.version>1.16.1</msal4j.version>
+    <kotlin-stdlib.version>1.9.25</kotlin-stdlib.version>
   </properties>
 
   <dependencies>
     <dependency>
       <groupId>com.azure</groupId>
       <artifactId>azure-identity</artifactId>
-      <version>${azure.identity.version}</version>
+      <version>${azure-identity.version}</version>
       <exclusions>
         <exclusion>
           <groupId>com.nimbusds</groupId>
           <artifactId>nimbus-jose-jwt</artifactId>
         </exclusion>
-        <exclusion>
-          <groupId>com.azure</groupId>
-          <artifactId>azure-json</artifactId>
-        </exclusion>
         <exclusion>
           <groupId>net.java.dev.jna</groupId>
           <artifactId>jna-platform</artifactId>
@@ -58,11 +63,6 @@
         </exclusion>
       </exclusions>
     </dependency>
-    <dependency>
-      <groupId>com.azure</groupId>
-      <artifactId>azure-json</artifactId>
-      <version>${azure.json.version}</version>
-    </dependency>
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>tika-core</artifactId>
@@ -87,6 +87,21 @@
         </exclusion>
       </exclusions>
     </dependency>
+    <dependency>
+      <groupId>com.nimbusds</groupId>
+      <artifactId>nimbus-jose-jwt</artifactId>
+      <version>${nimbus-jose-jwt.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>com.microsoft.azure</groupId>
+      <artifactId>msal4j</artifactId>
+      <version>${msal4j.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.jetbrains.kotlin</groupId>
+      <artifactId>kotlin-stdlib</artifactId>
+      <version>${kotlin-stdlib.version}</version>
+    </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
       <artifactId>junit-jupiter-engine</artifactId>
@@ -103,12 +118,7 @@
       <version>${mockito-junit-jupiter.version}</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>com.nimbusds</groupId>
-      <artifactId>nimbus-jose-jwt</artifactId>
-    </dependency>
   </dependencies>
-
   <build>
     <plugins>
       <plugin>
diff --git a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/MicrosoftGraphFetcher.java b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/MicrosoftGraphFetcher.java
index 3c27795d3..6871a70b6 100644
--- a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/MicrosoftGraphFetcher.java
+++ b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/MicrosoftGraphFetcher.java
@@ -86,18 +86,16 @@ public class MicrosoftGraphFetcher extends AbstractFetcher implements Initializa
     public void initialize(Map<String, Param> map) {
         String[] scopes = microsoftGraphFetcherConfig
                 .getScopes().toArray(new String[0]);
-        if (microsoftGraphFetcherConfig.getCredentials() instanceof ClientCertificateCredentialsConfig) {
-            ClientCertificateCredentialsConfig credentials =
-                    (ClientCertificateCredentialsConfig) microsoftGraphFetcherConfig.getCredentials();
+        if (microsoftGraphFetcherConfig.getClientCertificateCredentialsConfig() != null) {
+            ClientCertificateCredentialsConfig credentials = microsoftGraphFetcherConfig.getClientCertificateCredentialsConfig();
             graphClient = new GraphServiceClient(
                     new ClientCertificateCredentialBuilder().clientId(credentials.getClientId())
                             .tenantId(credentials.getTenantId()).pfxCertificate(
                                     new ByteArrayInputStream(credentials.getCertificateBytes()))
                             .clientCertificatePassword(credentials.getCertificatePassword())
                             .build(), scopes);
-        } else if (microsoftGraphFetcherConfig.getCredentials() instanceof ClientSecretCredentialsConfig) {
-            ClientSecretCredentialsConfig credentials =
-                    (ClientSecretCredentialsConfig) microsoftGraphFetcherConfig.getCredentials();
+        } else if (microsoftGraphFetcherConfig.getClientSecretCredentialsConfig() != null) {
+            ClientSecretCredentialsConfig credentials = microsoftGraphFetcherConfig.getClientSecretCredentialsConfig();
             graphClient = new GraphServiceClient(
                     new ClientSecretCredentialBuilder().tenantId(credentials.getTenantId())
                             .clientId(credentials.getClientId())
diff --git a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/AadCredentialConfigBase.java b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/AadCredentialConfigBase.java
index e4204739c..c4744c54c 100644
--- a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/AadCredentialConfigBase.java
+++ b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/AadCredentialConfigBase.java
@@ -16,25 +16,12 @@
  */
 package org.apache.tika.pipes.fetchers.microsoftgraph.config;
 
-public abstract class AadCredentialConfigBase {
-    private String tenantId;
-    private String clientId;
+public interface AadCredentialConfigBase<T> {
+    String getTenantId();
 
-    public String getTenantId() {
-        return tenantId;
-    }
+    T setTenantId(String tenantId);
 
-    public AadCredentialConfigBase setTenantId(String tenantId) {
-        this.tenantId = tenantId;
-        return this;
-    }
+    String getClientId();
 
-    public String getClientId() {
-        return clientId;
-    }
-
-    public AadCredentialConfigBase setClientId(String clientId) {
-        this.clientId = clientId;
-        return this;
-    }
+    T setClientId(String clientId);
 }
diff --git a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/ClientCertificateCredentialsConfig.java b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/ClientCertificateCredentialsConfig.java
index 2927519f1..0e57ca611 100644
--- a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/ClientCertificateCredentialsConfig.java
+++ b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/ClientCertificateCredentialsConfig.java
@@ -16,7 +16,9 @@
  */
 package org.apache.tika.pipes.fetchers.microsoftgraph.config;
 
-public class ClientCertificateCredentialsConfig extends AadCredentialConfigBase {
+public class ClientCertificateCredentialsConfig implements AadCredentialConfigBase<ClientCertificateCredentialsConfig> {
+    private String clientId;
+    private String tenantId;
     private byte[] certificateBytes;
     private String certificatePassword;
 
@@ -37,4 +39,26 @@ public class ClientCertificateCredentialsConfig extends AadCredentialConfigBase
         this.certificatePassword = certificatePassword;
         return this;
     }
+
+    @Override
+    public String getClientId() {
+        return clientId;
+    }
+
+    @Override
+    public ClientCertificateCredentialsConfig setClientId(String clientId) {
+        this.clientId = clientId;
+        return this;
+    }
+
+    @Override
+    public String getTenantId() {
+        return tenantId;
+    }
+
+    @Override
+    public ClientCertificateCredentialsConfig setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+        return this;
+    }
 }
diff --git a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/ClientSecretCredentialsConfig.java b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/ClientSecretCredentialsConfig.java
index 2989af941..bbe0e7638 100644
--- a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/ClientSecretCredentialsConfig.java
+++ b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/ClientSecretCredentialsConfig.java
@@ -16,7 +16,9 @@
  */
 package org.apache.tika.pipes.fetchers.microsoftgraph.config;
 
-public class ClientSecretCredentialsConfig extends AadCredentialConfigBase {
+public class ClientSecretCredentialsConfig implements AadCredentialConfigBase<ClientSecretCredentialsConfig> {
+    private String clientId;
+    private String tenantId;
     private String clientSecret;
 
     public String getClientSecret() {
@@ -27,4 +29,26 @@ public class ClientSecretCredentialsConfig extends AadCredentialConfigBase {
         this.clientSecret = clientSecret;
         return this;
     }
+
+    @Override
+    public String getClientId() {
+        return clientId;
+    }
+
+    @Override
+    public ClientSecretCredentialsConfig setClientId(String clientId) {
+        this.clientId = clientId;
+        return this;
+    }
+
+    @Override
+    public String getTenantId() {
+        return tenantId;
+    }
+
+    @Override
+    public ClientSecretCredentialsConfig setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+        return this;
+    }
 }
diff --git a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/MicrosoftGraphFetcherConfig.java b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/MicrosoftGraphFetcherConfig.java
index 04a43e000..495f83ba6 100644
--- a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/MicrosoftGraphFetcherConfig.java
+++ b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/main/java/org/apache/tika/pipes/fetchers/microsoftgraph/config/MicrosoftGraphFetcherConfig.java
@@ -24,8 +24,8 @@ import org.apache.tika.pipes.fetcher.config.AbstractConfig;
 public class MicrosoftGraphFetcherConfig extends AbstractConfig {
     private long[] throttleSeconds;
     private boolean spoolToTemp;
-    private AadCredentialConfigBase credentials;
-
+    private ClientSecretCredentialsConfig clientSecretCredentialsConfig;
+    private ClientCertificateCredentialsConfig clientCertificateCredentialsConfig;
     private List<String> scopes = new ArrayList<>();
 
     public boolean isSpoolToTemp() {
@@ -46,21 +46,30 @@ public class MicrosoftGraphFetcherConfig extends AbstractConfig {
         return this;
     }
 
-    public AadCredentialConfigBase getCredentials() {
-        return credentials;
+    public List<String> getScopes() {
+        return scopes;
     }
 
-    public MicrosoftGraphFetcherConfig setCredentials(AadCredentialConfigBase credentials) {
-        this.credentials = credentials;
+    public MicrosoftGraphFetcherConfig setScopes(List<String> scopes) {
+        this.scopes = scopes;
         return this;
     }
 
-    public List<String> getScopes() {
-        return scopes;
+    public ClientSecretCredentialsConfig getClientSecretCredentialsConfig() {
+        return clientSecretCredentialsConfig;
     }
 
-    public MicrosoftGraphFetcherConfig setScopes(List<String> scopes) {
-        this.scopes = scopes;
+    public MicrosoftGraphFetcherConfig setClientSecretCredentialsConfig(ClientSecretCredentialsConfig clientSecretCredentialsConfig) {
+        this.clientSecretCredentialsConfig = clientSecretCredentialsConfig;
+        return this;
+    }
+
+    public ClientCertificateCredentialsConfig getClientCertificateCredentialsConfig() {
+        return clientCertificateCredentialsConfig;
+    }
+
+    public MicrosoftGraphFetcherConfig setClientCertificateCredentialsConfig(ClientCertificateCredentialsConfig clientCertificateCredentialsConfig) {
+        this.clientCertificateCredentialsConfig = clientCertificateCredentialsConfig;
         return this;
     }
 }
diff --git a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/test/java/org/apache/tika/pipes/fetchers/microsoftgraph/MicrosoftGraphFetcherTest.java b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/test/java/org/apache/tika/pipes/fetchers/microsoftgraph/MicrosoftGraphFetcherTest.java
index 3eb9ecf36..ea61f8724 100644
--- a/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/test/java/org/apache/tika/pipes/fetchers/microsoftgraph/MicrosoftGraphFetcherTest.java
+++ b/tika-pipes/tika-fetchers/tika-fetcher-microsoft-graph/src/test/java/org/apache/tika/pipes/fetchers/microsoftgraph/MicrosoftGraphFetcherTest.java
@@ -59,10 +59,11 @@ class MicrosoftGraphFetcherTest {
     GraphServiceClient graphClient;
     @Spy
     @SuppressWarnings("unused")
-    MicrosoftGraphFetcherConfig microsoftGraphFetcherConfig = new MicrosoftGraphFetcherConfig().setCredentials(
-            new ClientCertificateCredentialsConfig().setCertificateBytes(certificateBytes)
+    MicrosoftGraphFetcherConfig microsoftGraphFetcherConfig = new MicrosoftGraphFetcherConfig()
+            .setClientCertificateCredentialsConfig(new ClientCertificateCredentialsConfig().setCertificateBytes(certificateBytes)
                     .setCertificatePassword(certificatePassword).setClientId(clientId)
-                    .setTenantId(tenantId)).setScopes(Collections.singletonList(".default"));
+                    .setTenantId(tenantId))
+            .setScopes(Collections.singletonList(".default"));
 
     @Mock
     DrivesRequestBuilder drivesRequestBuilder;