[ https://issues.apache.org/jira/browse/ZOOKEEPER-1525?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15618785#comment-15618785 ]
ASF GitHub Bot commented on ZOOKEEPER-1525: ------------------------------------------- Github user Randgalt commented on a diff in the pull request: https://github.com/apache/zookeeper/pull/84#discussion_r85649050 --- 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 -- Yes, you are correct. >Do we have to do it for this method only or for others as well? Well, it can be done anywhere. I only need it here. > 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)