wuchong commented on code in PR #1941:
URL: https://github.com/apache/fluss/pull/1941#discussion_r2725033662


##########
fluss-filesystems/fluss-fs-abfs/pom.xml:
##########
@@ -0,0 +1,362 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the 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 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.fluss</groupId>
+        <artifactId>fluss-filesystems</artifactId>
+        <version>0.9-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>fluss-fs-abfs</artifactId>
+    <name>Fluss : FileSystems : Azure FS</name>
+
+    <packaging>jar</packaging>
+
+    <properties>
+        <fs.azure.sdk.version>3.3.4</fs.azure.sdk.version>
+        <fs.azure.api.version>1.16.0</fs.azure.api.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.fluss</groupId>
+            <artifactId>fluss-common</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- The Hadoop file system adapter classes (bundled) -->
+        <dependency>
+            <groupId>org.apache.fluss</groupId>
+            <artifactId>fluss-fs-hadoop</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <!-- Hadoop's file system abstraction (bundled) -->
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-common</artifactId>
+            <version>${fs.hadoopshaded.version}</version>

Review Comment:
   We should replace the current dependency with the `fluss-fs-hadoop-shaded` 
artifact, consistent with how other filesystems are handled. This avoids the 
need to manually declare a direct dependency on `hadoop-common`, which is 
difficult to maintain under centralized dependency management and often pulls 
in unnecessary transitive dependencies.
   
   Moreover, depending directly on `hadoop-common` introduces several 
third-party libraries licensed under Category B (as defined in 
https://www.apache.org/legal/resolved.html). Including such dependencies 
requires us to bundle corresponding license notices in the resource folder, 
significantly increasing maintenance overhead.
   
   Instead, using the shaded artifact cleanly encapsulates these dependencies. 
The correct declaration is:
   
   ```xml
   <dependency>
       <groupId>org.apache.fluss</groupId>
       <artifactId>fluss-fs-hadoop-shaded</artifactId>
       <version>${project.version}</version>
   </dependency>
   ```



##########
fluss-filesystems/fluss-fs-abfs/src/main/java/org/apache/fluss/fs/abfs/AzureFileSystem.java:
##########
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.fluss.fs.abfs;
+
+import org.apache.fluss.fs.FileSystem;
+import org.apache.fluss.fs.abfs.token.AzureDelegationTokenProvider;
+import org.apache.fluss.fs.hdfs.HadoopFileSystem;
+import org.apache.fluss.fs.token.ObtainedSecurityToken;
+
+import org.apache.hadoop.conf.Configuration;
+
+import java.io.IOException;
+
+/**
+ * Implementation of the Fluss {@link FileSystem} interface for Azure Blob 
Storage. This class
+ * implements the common behavior implemented directly by Fluss and delegates 
common calls to an
+ * implementation of Hadoop's filesystem abstraction.
+ */
+public class AzureFileSystem extends HadoopFileSystem {
+
+    private final String scheme;
+    private final Configuration conf;
+
+    private volatile AzureDelegationTokenProvider delegationTokenProvider;
+
+    /**
+     * Wraps the given Hadoop File System object as a Flink File System 
object. The given Hadoop

Review Comment:
   ```suggestion
        * Wraps the given Hadoop File System object as a Fluss File System 
object. The given Hadoop
   ```



##########
fluss-test-coverage/pom.xml:
##########
@@ -362,6 +362,7 @@
                                         
<exclude>org.apache.fluss.fs.hdfs.HdfsSecurityTokenReceiver</exclude>
                                         
<exclude>org.apache.fluss.fs.oss.*</exclude>
                                         
<exclude>org.apache.fluss.fs.s3.*</exclude>
+                                        
<exclude>org.apache.fluss.fs.abfs.*</exclude>

Review Comment:
   Have you tried to remove this exclusion? It seems you have added many tests 
that will always run, that should have some test coverages. 



##########
fluss-filesystems/fluss-fs-abfs/src/main/java/org/apache/fluss/fs/abfs/WasbFileSystemPlugin.java:
##########
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.fluss.fs.abfs;
+
+/** Simple factory for the Abfs file system, registered for the 
<tt>wasb://</tt> scheme. */
+public class WasbFileSystemPlugin extends AbfsFileSystemPlugin {

Review Comment:
   The current javadocs are too brief and don't explain what these schemes are 
or their use cases. Suggested javadocs:
   
   ```java
   /**
    * FileSystem plugin for Azure Blob Storage using the ABFS (Azure Blob File 
System) driver.
    * Registered for the {@code abfs://} scheme.
    *
    * <p>ABFS is the recommended driver for accessing Azure Data Lake Storage 
Gen2. 
    * Use this scheme for non-SSL connections to ADLS Gen2 storage accounts.
    *
    * <p>URI format: {@code 
abfs://<container>@<storage-account>.dfs.core.windows.net/<path>}
    */
   public class AbfsFileSystemPlugin extends AzureFileSystemPlugin
   ```
   
   ```java
   /**
    * FileSystem plugin for Azure Blob Storage using the ABFS driver with 
SSL/TLS encryption.
    * Registered for the {@code abfss://} scheme.
    *
    * <p>This is the secure (SSL-enabled) variant of ABFS, recommended for 
production use 
    * with Azure Data Lake Storage Gen2.
    *
    * <p>URI format: {@code 
abfss://<container>@<storage-account>.dfs.core.windows.net/<path>}
    */
   public class AbfssFileSystemPlugin extends AzureFileSystemPlugin
   ```
   
   ```java
   /**
    * FileSystem plugin for Azure Blob Storage using the WASB (Windows Azure 
Storage Blob) driver.
    * Registered for the {@code wasb://} scheme.
    *
    * <p>WASB is the legacy driver for accessing Azure Blob Storage. Consider 
using ABFS 
    * for new deployments as it provides better performance and security 
features.
    *
    * <p>URI format: {@code 
wasb://<container>@<storage-account>.blob.core.windows.net/<path>}
    */
   public class WasbFileSystemPlugin extends AzureFileSystemPlugin
   ```
   
   ```java
   /**
    * FileSystem plugin for Azure Blob Storage using the WASB driver with 
SSL/TLS encryption.
    * Registered for the {@code wasbs://} scheme.
    *
    * <p>This is the secure (SSL-enabled) variant of WASB for legacy Azure Blob 
Storage access.
    * For new deployments, consider using {@code abfss://} with Azure Data Lake 
Storage Gen2.
    *
    * <p>URI format: {@code 
wasbs://<container>@<storage-account>.blob.core.windows.net/<path>}
    */
   public class WasbsFileSystemPlugin extends AzureFileSystemPlugin
   ```
   
   This helps users understand:
   1. What each abbreviation stands for
   2. When to use each scheme
   3. The URI format for configuration
   4. The relationship between legacy (WASB) and modern (ABFS) drivers



##########
fluss-filesystems/fluss-fs-abfs/src/main/java/org/apache/fluss/fs/abfs/AbfsFileSystemPlugin.java:
##########
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.fluss.fs.abfs;
+
+import org.apache.fluss.config.ConfigBuilder;
+import org.apache.fluss.config.Configuration;
+import org.apache.fluss.fs.FileSystem;
+import org.apache.fluss.fs.FileSystemPlugin;
+import org.apache.fluss.fs.abfs.token.AzureDelegationTokenReceiver;
+
+import org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Objects;
+
+import static 
org.apache.fluss.fs.abfs.token.AzureDelegationTokenProvider.ACCOUNT_KEY;
+import static 
org.apache.fluss.fs.abfs.token.AzureDelegationTokenProvider.CLIENT_ID;
+import static 
org.apache.fluss.fs.abfs.token.AzureDelegationTokenReceiver.PROVIDER_CONFIG_NAME;
+
+/** Simple factory for the Azure File System. */
+public class AbfsFileSystemPlugin implements FileSystemPlugin {
+
+    private static final Logger LOG = 
LoggerFactory.getLogger(AbfsFileSystemPlugin.class);
+
+    private static final String[] FLUSS_CONFIG_PREFIXES = {"azure.", 
"fs.azure.", "fs.wasb."};

Review Comment:
   IIUC, these are the configuration options Fluss exposes to users for 
configuring Azure File System. Since this is the first time we’re making this 
API public, can we restrict the config prefix to `fs.azure.` only? This aligns 
with other filesystem implementations and avoids confusion about which prefix 
users should use.



##########
fluss-filesystems/fluss-fs-abfs/src/main/resources/META-INF/NOTICE:
##########
@@ -0,0 +1,86 @@
+fluss-fs-abfs
+Copyright 2025 The Apache Software Foundation
+
+This project bundles the following dependencies under the Apache Software 
License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt).
+
+- com.fasterxml.jackson.core:jackson-annotations:2.15.3
+- com.fasterxml.jackson.core:jackson-core:2.15.3
+- com.fasterxml.jackson.core:jackson-databind:2.15.3
+- com.fasterxml.woodstox:woodstox-core:5.4.0
+- com.google.guava:failureaccess:1.0
+- com.google.guava:guava:27.0-jre
+- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
+- com.google.j2objc:j2objc-annotations:1.1
+- com.microsoft.azure:azure-keyvault-core:1.0.0
+- com.microsoft.azure:azure-storage:7.0.1
+- commons-beanutils:commons-beanutils:1.9.4
+- commons-codec:commons-codec:1.11
+- commons-collections:commons-collections:3.2.2
+- commons-io:commons-io:2.14.0
+- commons-logging:commons-logging:1.2
+- io.dropwizard.metrics:metrics-core:3.2.4
+- io.netty:netty-buffer:4.1.100.Final
+- io.netty:netty-codec:4.1.100.Final
+- io.netty:netty-common:4.1.100.Final
+- io.netty:netty-handler:4.1.100.Final
+- io.netty:netty-resolver:4.1.100.Final
+- io.netty:netty-transport:4.1.100.Final
+- io.netty:netty-transport-classes-epoll:4.1.100.Final
+- io.netty:netty-transport-native-epoll:4.1.100.Final
+- io.netty:netty-transport-native-unix-common:4.1.100.Final
+- org.apache.commons:commons-compress:1.24.0
+- org.apache.commons:commons-configuration2:2.8.0
+- org.apache.commons:commons-lang3:3.18.0
+- org.apache.commons:commons-text:1.10.0
+- org.apache.hadoop.thirdparty:hadoop-shaded-guava:1.2.0
+- org.apache.hadoop.thirdparty:hadoop-shaded-protobuf_3_21:1.2.0
+- org.apache.hadoop:hadoop-annotations:3.4.0
+- org.apache.hadoop:hadoop-auth:3.4.0
+- org.apache.hadoop:hadoop-azure:3.4.0
+- org.apache.hadoop:hadoop-common:3.4.0
+- org.apache.kerby:kerb-core:2.0.3
+- org.apache.kerby:kerby-asn1:2.0.3
+- org.apache.kerby:kerby-pkix:2.0.3
+- org.apache.kerby:kerby-util:2.0.3
+- org.apache.httpcomponents:httpclient:4.5.13
+- org.apache.httpcomponents:httpcore:4.4.13
+- org.codehaus.jettison:jettison:1.5.4
+- org.wildfly.openssl:wildfly-openssl:1.1.3.Final
+- org.xerial.snappy:snappy-java:1.1.10.4
+- javax.xml.stream:stax-api:1.0-2
+
+This project bundles the following dependencies under the BSD license. See 
bundled license files for details.
+
+- dnsjava:dnsjava:3.4.0
+- org.codehaus.woodstox:stax2-api:4.2.1
+
+This project bundles the following dependencies under the Go License 
(https://golang.org/LICENSE). See bundled license files for details.
+
+- com.google.re2j:re2j:1.1
+
+This project bundles the following dependencies under dual license CDDL 1.1 / 
GPLv2 with Classpath Exception.
+- CDDL 1.1: https://oss.oracle.com/licenses/CDDL-1.1
+- GPLv2 + CPE: https://openjdk.org/legal/gplv2+ce.html
+
+- javax.xml.bind:jaxb-api:2.2.2
+- javax.xml.bind:jaxb-api:2.3.1
+- javax.activation:activation:1.1
+- com.sun.xml.bind:jaxb-impl:2.2.3-1
+- com.github.pjfanning:jersey-json:1.20
+
+This project bundles the following dependencies under the Eclipse Distribution 
License (EDL) 1.0 (https://www.eclipse.org/org/documents/edl-v10.php). See 
bundled license files for details.
+
+- jakarta.activation:jakarta.activation-api:1.2.1

Review Comment:
   This change introduces many Category B dependencies. According to Apache 
Software Foundation policy, all Category B dependencies require a corresponding 
`LICENSE-xxx` notice in the resource folder. These dependencies are likely 
pulled in because of a direct dependency on `hadoop-common`.
   
   To avoid this, please try replacing the direct `hadoop-common` dependency 
with `fluss-fs-hadoop-shaded`. This shaded artifact should encapsulate those 
transitive dependencies and may eliminate the need to declare them explicitly 
in the `NOTICE` file.



##########
fluss-filesystems/fluss-fs-abfs/src/main/java/org/apache/fluss/fs/abfs/AbfsFileSystemPlugin.java:
##########
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.fluss.fs.abfs;
+
+import org.apache.fluss.config.ConfigBuilder;
+import org.apache.fluss.config.Configuration;
+import org.apache.fluss.fs.FileSystem;
+import org.apache.fluss.fs.FileSystemPlugin;
+import org.apache.fluss.fs.abfs.token.AzureDelegationTokenReceiver;
+
+import org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Objects;
+
+import static 
org.apache.fluss.fs.abfs.token.AzureDelegationTokenProvider.ACCOUNT_KEY;
+import static 
org.apache.fluss.fs.abfs.token.AzureDelegationTokenProvider.CLIENT_ID;
+import static 
org.apache.fluss.fs.abfs.token.AzureDelegationTokenReceiver.PROVIDER_CONFIG_NAME;
+
+/** Simple factory for the Azure File System. */
+public class AbfsFileSystemPlugin implements FileSystemPlugin {
+
+    private static final Logger LOG = 
LoggerFactory.getLogger(AbfsFileSystemPlugin.class);
+
+    private static final String[] FLUSS_CONFIG_PREFIXES = {"azure.", 
"fs.azure.", "fs.wasb."};
+
+    private static final String HADOOP_CONFIG_PREFIX = "fs.azure.";
+
+    @Override
+    public String getScheme() {
+        return "abfs";
+    }
+
+    @Override
+    public FileSystem create(URI fsUri, Configuration flussConfig) throws 
IOException {
+        org.apache.hadoop.conf.Configuration hadoopConfig = 
getHadoopConfiguration(flussConfig);
+
+        setCredentialProvider(hadoopConfig);
+
+        // create the Google Hadoop FileSystem

Review Comment:
   ```suggestion
           // create the Azure Hadoop FileSystem
   ```



##########
fluss-filesystems/fluss-fs-abfs/src/main/java/org/apache/fluss/fs/abfs/token/AzureDelegationTokenReceiver.java:
##########
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.fluss.fs.abfs.token;
+
+import org.apache.fluss.fs.token.Credentials;
+import org.apache.fluss.fs.token.CredentialsJsonSerde;
+import org.apache.fluss.fs.token.ObtainedSecurityToken;
+import org.apache.fluss.fs.token.SecurityTokenReceiver;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Map;
+
+/** Security token receiver for the abfs filesystem. */
+public class AzureDelegationTokenReceiver implements SecurityTokenReceiver {
+    public static final String PROVIDER_CONFIG_NAME = 
"fs.azure.account.oauth.provider.type";
+
+    private static final Logger LOG = 
LoggerFactory.getLogger(AzureDelegationTokenReceiver.class);
+
+    static volatile Credentials credentials;
+    static volatile Long validUntil;
+    static volatile Map<String, String> additionInfos;
+
+    public static void updateHadoopConfig(org.apache.hadoop.conf.Configuration 
hadoopConfig) {
+        LOG.info("Updating Hadoop configuration");
+
+        String providers = hadoopConfig.get(PROVIDER_CONFIG_NAME, "");
+
+        if 
(!providers.contains(DynamicTemporaryAzureCredentialsProvider.NAME)) {
+            if (providers.isEmpty()) {
+                LOG.debug("Setting provider");
+                providers = DynamicTemporaryAzureCredentialsProvider.NAME;
+            } else {
+                providers = DynamicTemporaryAzureCredentialsProvider.NAME + 
"," + providers;
+                LOG.debug("Prepending provider, new providers value: {}", 
providers);
+            }
+            hadoopConfig.set(PROVIDER_CONFIG_NAME, providers);
+        } else {
+            LOG.debug("Provider already exists");
+        }
+
+        // then, set addition info
+        if (additionInfos == null) {
+            // if addition info is null, it also means we have not received 
any token,
+            // we throw IllegalStateException
+            throw new 
IllegalStateException(DynamicTemporaryAzureCredentialsProvider.COMPONENT);
+        } else {
+            for (Map.Entry<String, String> entry : additionInfos.entrySet()) {
+                hadoopConfig.set(entry.getKey(), entry.getValue());
+            }
+        }
+
+        LOG.info("Updated Hadoop configuration successfully");
+    }
+
+    @Override
+    public String scheme() {
+        return "abfs";

Review Comment:
   Is this `AzureDelegationTokenReceiver` can only be used for `abfs` or can be 
shared for all azure filesystems? If it can be shared, we should create 
`AzureDelegationTokenReceiver` for each azure schemes and register it to SPI. 



##########
fluss-filesystems/fluss-fs-gs/src/test/java/org/apache/fluss/fs/gs/AuthServerHandler.java:
##########
@@ -43,7 +43,7 @@
 import static 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpResponseStatus.NOT_FOUND;
 import static 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpResponseStatus.OK;
 
-/** Netty Handler for facilitating the Google auth token generation. */
+/** Netty Handler for facilitating the Azure auth token generation. */
 public class AuthServerHandler extends SimpleChannelInboundHandler<HttpObject> 
{

Review Comment:
   revert. This is under google fs package



##########
fluss-filesystems/fluss-fs-abfs/src/test/java/org/apache/fluss/fs/abfs/token/AuthServerHandler.java:
##########
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.fluss.fs.abfs.token;
+
+import org.apache.fluss.shaded.netty4.io.netty.buffer.Unpooled;
+import org.apache.fluss.shaded.netty4.io.netty.channel.ChannelHandlerContext;
+import 
org.apache.fluss.shaded.netty4.io.netty.channel.SimpleChannelInboundHandler;
+import 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.DefaultFullHttpResponse;
+import 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.FullHttpResponse;
+import org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpMethod;
+import org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpObject;
+import org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpRequest;
+import 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpResponseStatus;
+import org.apache.fluss.shaded.netty4.io.netty.util.AsciiString;
+import org.apache.fluss.utils.IOUtils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+
+import static 
org.apache.fluss.shaded.guava32.com.google.common.net.HttpHeaders.CONTENT_ENCODING;
+import static 
org.apache.fluss.shaded.guava32.com.google.common.net.HttpHeaders.CONTENT_LENGTH;
+import static 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpHeaderNames.CONNECTION;
+import static 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpHeaderNames.CONTENT_TYPE;
+import static 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpHeaderValues.APPLICATION_JSON;
+import static 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpHeaderValues.CLOSE;
+import static 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpResponseStatus.NOT_FOUND;
+import static 
org.apache.fluss.shaded.netty4.io.netty.handler.codec.http.HttpResponseStatus.OK;
+
+/** Netty Handler for facilitating the Google auth token generation. */

Review Comment:
   ```suggestion
   /** Netty Handler for facilitating the Azure auth token generation. */
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to