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

ASF GitHub Bot commented on ZOOKEEPER-1525:
-------------------------------------------

Github user fpj commented on a diff in the pull request:

    https://github.com/apache/zookeeper/pull/84#discussion_r85642389
  
    --- Diff: 
src/java/main/org/apache/zookeeper/server/auth/WrappedAuthenticationProvider.java
 ---
    @@ -0,0 +1,74 @@
    +/**
    + * 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.zookeeper.server.auth;
    +
    +import org.apache.zookeeper.KeeperException;
    +import org.apache.zookeeper.data.ACL;
    +import org.apache.zookeeper.server.ServerCnxn;
    +import org.apache.zookeeper.server.ZooKeeperServer;
    +
    +import java.util.List;
    +
    +/**
    + * Provides backwards compatibility between older {@link 
AuthenticationProvider}
    + * implementations and the new {@link ServerAuthenticationProvider} 
interface.
    + */
    +class WrappedAuthenticationProvider extends ServerAuthenticationProvider {
    +    private final AuthenticationProvider implementation;
    +
    +    static ServerAuthenticationProvider wrap(AuthenticationProvider 
provider) {
    +        return (provider instanceof ServerAuthenticationProvider) ? 
(ServerAuthenticationProvider)provider
    +                : new WrappedAuthenticationProvider(provider);
    +    }
    +
    +    private WrappedAuthenticationProvider(AuthenticationProvider 
implementation) {
    +        this.implementation = implementation;
    +    }
    +
    +    @Override
    +    public KeeperException.Code handleAuthentication(ZooKeeperServer zks, 
ServerCnxn cnxn, byte[] authData) {
    +        return implementation.handleAuthentication(cnxn, authData);
    +    }
    +
    +    /**
    +     * {@inheritDoc}
    --- End diff --
    
    I've never used this before and from the name it implies that it will copy 
the doc blurb from the super class when running the javadoc tool. Is this 
correct? Do we have to do it for this method only or for others as well?


> Plumb ZooKeeperServer object into auth plugins
> ----------------------------------------------
>
>                 Key: ZOOKEEPER-1525
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1525
>             Project: ZooKeeper
>          Issue Type: Improvement
>    Affects Versions: 3.5.0
>            Reporter: Warren Turkal
>            Assignee: Jordan Zimmerman
>             Fix For: 3.5.3, 3.6.0
>
>         Attachments: ZOOKEEPER-1525.patch, ZOOKEEPER-1525.patch, 
> ZOOKEEPER-1525.patch, ZOOKEEPER-1525.patch, ZOOKEEPER-1525.patch, 
> ZOOKEEPER-1525.patch, 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.3.4#6332)

Reply via email to