You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@zookeeper.apache.org by "Michi Mutsuzaki (JIRA)" <ji...@apache.org> on 2014/03/29 01:54:15 UTC

[jira] [Commented] (ZOOKEEPER-1525) Plumb ZooKeeperServer object into auth plugins

    [ https://issues.apache.org/jira/browse/ZOOKEEPER-1525?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13951652#comment-13951652 ] 

Michi Mutsuzaki commented on ZOOKEEPER-1525:
--------------------------------------------

Hi Warren,

Sorry for super-slow response. I have 2 comments:

1. Could you fix these warnings?

{noformat}
compile:
    [javac] Compiling 3 source files to /home/michi/svndev/zookeeper/trunk/build/classes
    [javac] warning: [options] bootstrap class path not set in conjunction with -source 1.5
    [javac] /home/michi/svndev/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/auth/ProviderRegistry.java:57: warning: [cast] redundant cast to AuthenticationProvider
    [javac]                             ap = (AuthenticationProvider)constructor.newInstance(zks);
    [javac]                                  ^
    [javac] /home/michi/svndev/zookeeper/trunk/src/java/main/org/apache/zookeeper/server/auth/ProviderRegistry.java:60: warning: [cast] redundant cast to AuthenticationProvider
    [javac]                             ap = (AuthenticationProvider)constructor.newInstance();
    [javac]                                  ^
    [javac] 3 warnings
{noformat}

2. When does this throw NullPointerException? Isn't it supposed to throw IllegalArgumentException if the arguments don't match?

{noformat}
+                        Constructor<AuthenticationProvider> constructor = c.getConstructor(ZooKeeperServer.class);
+                        try {
+                            ap = (AuthenticationProvider)constructor.newInstance(zks);
+                        } catch (NullPointerException e) {
+                            constructor = c.getConstructor();
+                            ap = (AuthenticationProvider)constructor.newInstance();
+                        }
{noformat}


> Plumb ZooKeeperServer object into auth plugins
> ----------------------------------------------
>
>                 Key: ZOOKEEPER-1525
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1525
>             Project: ZooKeeper
>          Issue Type: Improvement
>            Reporter: Warren Turkal
>            Assignee: Warren Turkal
>             Fix For: 3.5.0
>
>         Attachments: ZOOKEEPER-1525.patch
>
>
> I want to plumb the ZooKeeperServer object into the auth plugins so that I can store authentication data in zookeeper itself. With access to the ZooKeeperServer object, I also have access to the ZKDatabase and can look up entries in the local copy of the zookeeper data.
> In order to implement this, I make sure that a ZooKeeperServer instance is passed in to the ProviderRegistry.initialize() method. Then initialize() will try to find a constructor for the AuthenticationProvider that takes a ZooKeeperServer instance. If the constructor is found, it will be used. Otherwise, initialize() will look for a constructor that takes no arguments and use that instead.



--
This message was sent by Atlassian JIRA
(v6.2#6252)