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

chengpan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kyuubi-shaded.git


The following commit(s) were added to refs/heads/master by this push:
     new b3cfca3  [KYUUBI-SHADED #61] [KYUUBI-SHADED #60] Step 2/2: 
TSaslServerTransport use SaslServerFactory to create SaslServer
b3cfca3 is described below

commit b3cfca3581a7345578d6d70af8f30659a3049f09
Author: Cheng Pan <cheng...@apache.org>
AuthorDate: Fri Jul 18 17:02:49 2025 +0800

    [KYUUBI-SHADED #61] [KYUUBI-SHADED #60] Step 2/2: TSaslServerTransport use 
SaslServerFactory to create SaslServer
    
    ### _Why are the changes needed?_
    
    Define a `SaslServerFactory` and allow 
[TSaslServerTransport](https://github.com/apache/thrift/blob/0.16.0/lib/java/src/org/apache/thrift/transport/TSaslServerTransport.java)
 to use `SaslServerFactory` to create `SaslServer` instead of simply calling 
`Sasl.createSaslServer`
    
    ```
    public interface SaslServerFactory {
      SaslServer create(TSaslServerDefinition d) throws SaslException;
    }
    ```
    
    Close #60
    
    ### _How was this patch tested?_
    - [ ] Add some test cases that check the changes thoroughly including 
negative and positive cases if possible
    
    - [ ] Add screenshots for manual tests if appropriate
    
    - [ ] [Run 
test](https://kyuubi.readthedocs.io/en/master/develop_tools/testing.html#running-tests)
 locally before make a pull request
    
    Closes #61 from pan3793/thrift-sasl.
    
    618b3d0 [Cheng Pan] TSaslServerTransport supports custom SaslServerFactory
    
    Authored-by: Cheng Pan <cheng...@apache.org>
    Signed-off-by: Cheng Pan <cheng...@apache.org>
---
 .../thrift/transport/TSaslServerTransport.java     | 36 +++++++++++++++++-----
 1 file changed, 28 insertions(+), 8 deletions(-)

diff --git 
a/kyuubi-relocated-thrift/src/main/java/org/apache/thrift/transport/TSaslServerTransport.java
 
b/kyuubi-relocated-thrift/src/main/java/org/apache/thrift/transport/TSaslServerTransport.java
index 87a91ff..83363a5 100644
--- 
a/kyuubi-relocated-thrift/src/main/java/org/apache/thrift/transport/TSaslServerTransport.java
+++ 
b/kyuubi-relocated-thrift/src/main/java/org/apache/thrift/transport/TSaslServerTransport.java
@@ -43,6 +43,8 @@ public class TSaslServerTransport extends TSaslTransport {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(TSaslServerTransport.class);
 
+  private SaslServerFactory saslServerFactory = new JdkSaslServerFactory();
+
   /**
    * Mapping from SASL mechanism name -> all the parameters required to 
instantiate a SASL server.
    */
@@ -96,6 +98,10 @@ public class TSaslServerTransport extends TSaslTransport {
         mechanism, new TSaslServerDefinition(mechanism, protocol, serverName, 
props, cbh));
   }
 
+  public void setSaslServerFactory(SaslServerFactory f) {
+    this.saslServerFactory = f;
+  }
+
   @Override
   protected SaslRole getRole() {
     return SaslRole.SERVER;
@@ -125,16 +131,22 @@ public class TSaslServerTransport extends TSaslTransport {
       throw sendAndThrowMessage(
           NegotiationStatus.BAD, "Unsupported mechanism type " + 
mechanismName);
     }
-    SaslServer saslServer =
-        Sasl.createSaslServer(
-            serverDefinition.mechanism,
-            serverDefinition.protocol,
-            serverDefinition.serverName,
-            serverDefinition.props,
-            serverDefinition.cbh);
+    SaslServer saslServer = saslServerFactory.create(serverDefinition);
     setSaslServer(saslServer);
   }
 
+  public interface SaslServerFactory {
+    SaslServer create(TSaslServerDefinition d) throws SaslException;
+  }
+
+  public static class JdkSaslServerFactory implements SaslServerFactory {
+
+    @Override
+    public SaslServer create(TSaslServerDefinition d) throws SaslException {
+      return Sasl.createSaslServer(d.mechanism, d.protocol, d.serverName, 
d.props, d.cbh);
+    }
+  }
+
   /**
    * <code>TTransportFactory</code> to create 
<code>TSaslServerTransports</code>. Ensures that a
    * given underlying <code>TTransport</code> instance receives the same 
<code>TSaslServerTransport
@@ -156,6 +168,8 @@ public class TSaslServerTransport extends TSaslTransport {
      */
     private Map<String, TSaslServerDefinition> serverDefinitionMap = new 
HashMap<>();
 
+    private SaslServerFactory saslServerFactory = new JdkSaslServerFactory();
+
     /** Create a new Factory. Assumes that <code>addServerDefinition</code> 
will be called later. */
     public Factory() {
       super();
@@ -190,6 +204,10 @@ public class TSaslServerTransport extends TSaslTransport {
           mechanism, new TSaslServerDefinition(mechanism, protocol, 
serverName, props, cbh));
     }
 
+    public void setSaslServerFactory(SaslServerFactory f) {
+      this.saslServerFactory = f;
+    }
+
     /**
      * Get a new <code>TSaslServerTransport</code> instance, or reuse the 
existing one if a <code>
      * TSaslServerTransport</code> has already been created before using the 
given <code>TTransport
@@ -201,7 +219,9 @@ public class TSaslServerTransport extends TSaslTransport {
       WeakReference<TSaslServerTransport> ret = transportMap.get(base);
       if (ret == null || ret.get() == null) {
         LOGGER.debug("transport map does not contain key {}", base);
-        ret = new WeakReference<>(new 
TSaslServerTransport(serverDefinitionMap, base));
+        TSaslServerTransport t = new TSaslServerTransport(serverDefinitionMap, 
base);
+        t.setSaslServerFactory(saslServerFactory);
+        ret = new WeakReference<>(t);
         try {
           ret.get().open();
         } catch (TTransportException e) {

Reply via email to