http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/78787d63/sentry-hdfs/src/main/java/org/apache/sentry/hdfs/UpdateableAuthzPaths.java ---------------------------------------------------------------------- diff --git a/sentry-hdfs/src/main/java/org/apache/sentry/hdfs/UpdateableAuthzPaths.java b/sentry-hdfs/src/main/java/org/apache/sentry/hdfs/UpdateableAuthzPaths.java deleted file mode 100644 index 165892d..0000000 --- a/sentry-hdfs/src/main/java/org/apache/sentry/hdfs/UpdateableAuthzPaths.java +++ /dev/null @@ -1,130 +0,0 @@ -/** - * 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.sentry.hdfs; - -import java.util.List; -import java.util.concurrent.atomic.AtomicLong; -import java.util.concurrent.locks.ReadWriteLock; - -import org.apache.sentry.hdfs.service.thrift.TPathChanges; -import org.apache.sentry.hdfs.service.thrift.TPathsDump; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class UpdateableAuthzPaths implements AuthzPaths, Updateable<PathsUpdate> { - private volatile HMSPaths paths; - private final AtomicLong seqNum = new AtomicLong(0); - - private static Logger LOG = LoggerFactory.getLogger(UpdateableAuthzPaths.class); - - public UpdateableAuthzPaths(String[] pathPrefixes) { - this.paths = new HMSPaths(pathPrefixes); - } - - UpdateableAuthzPaths(HMSPaths paths) { - this.paths = paths; - } - - @Override - public boolean isUnderPrefix(String[] pathElements) { - return paths.isUnderPrefix(pathElements); - } - - @Override - public String findAuthzObject(String[] pathElements) { - return paths.findAuthzObject(pathElements); - } - - @Override - public String findAuthzObjectExactMatch(String[] pathElements) { - return paths.findAuthzObjectExactMatch(pathElements); - } - - @Override - public UpdateableAuthzPaths updateFull(PathsUpdate update) { - UpdateableAuthzPaths other = getPathsDump().initializeFromDump( - update.getThriftObject().getPathsDump()); - other.seqNum.set(update.getSeqNum()); - return other; - } - - @Override - public void updatePartial(Iterable<PathsUpdate> updates, ReadWriteLock lock) { - lock.writeLock().lock(); - try { - int counter = 0; - for (PathsUpdate update : updates) { - applyPartialUpdate(update); - if (++counter > 99) { - counter = 0; - lock.writeLock().unlock(); - lock.writeLock().lock(); - } - seqNum.set(update.getSeqNum()); - LOG.warn("##### Updated paths seq Num [" + seqNum.get() + "]"); - } - } finally { - lock.writeLock().unlock(); - } - } - - private void applyPartialUpdate(PathsUpdate update) { - for (TPathChanges pathChanges : update.getPathChanges()) { - paths.addPathsToAuthzObject(pathChanges.getAuthzObj(), pathChanges - .getAddPaths(), true); - List<List<String>> delPaths = pathChanges.getDelPaths(); - if ((delPaths.size() == 1) && (delPaths.get(0).size() == 1) - && (delPaths.get(0).get(0).equals(PathsUpdate.ALL_PATHS))) { - // Remove all paths.. eg. drop table - paths.deleteAuthzObject(pathChanges.getAuthzObj()); - } else { - paths.deletePathsFromAuthzObject(pathChanges.getAuthzObj(), pathChanges - .getDelPaths()); - } - } - } - - @Override - public long getLastUpdatedSeqNum() { - return seqNum.get(); - } - - @Override - public PathsUpdate createFullImageUpdate(long currSeqNum) { - PathsUpdate pathsUpdate = new PathsUpdate(currSeqNum, true); - pathsUpdate.getThriftObject().setPathsDump(getPathsDump().createPathsDump()); - return pathsUpdate; - } - - @Override - public AuthzPathsDumper<UpdateableAuthzPaths> getPathsDump() { - return new AuthzPathsDumper<UpdateableAuthzPaths>() { - - @Override - public TPathsDump createPathsDump() { - return UpdateableAuthzPaths.this.paths.getPathsDump().createPathsDump(); - } - - @Override - public UpdateableAuthzPaths initializeFromDump(TPathsDump pathsDump) { - return new UpdateableAuthzPaths(new HMSPaths().getPathsDump().initializeFromDump( - pathsDump)); - } - }; - } -}
http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/78787d63/sentry-hdfs/src/main/resources/sentry_hdfs_service.thrift ---------------------------------------------------------------------- diff --git a/sentry-hdfs/src/main/resources/sentry_hdfs_service.thrift b/sentry-hdfs/src/main/resources/sentry_hdfs_service.thrift deleted file mode 100644 index 9212b64..0000000 --- a/sentry-hdfs/src/main/resources/sentry_hdfs_service.thrift +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/local/bin/thrift -java - -/** - * 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. - */ - -# -# Thrift Service that the MetaStore is built on -# - -include "share/fb303/if/fb303.thrift" - -namespace java org.apache.sentry.hdfs.service.thrift -namespace php sentry.hdfs.thrift -namespace cpp Apache.Sentry.HDFS.Thrift - -struct TPathChanges { -1: required string authzObj; -2: required list<list<string>> addPaths; -3: required list<list<string>> delPaths; -} - -struct TPathEntry { -1: required byte type; -2: required string pathElement; -3: optional string authzObj; -4: required set<i32> children; -} - -struct TPathsDump { -1: required i32 rootId; -2: required map<i32,TPathEntry> nodeMap; -} - -struct TPathsUpdate { -1: required bool hasFullImage; -2: optional TPathsDump pathsDump; -3: required i64 seqNum; -4: required list<TPathChanges> pathChanges; -} - -struct TPrivilegeChanges { -1: required string authzObj; -2: required map<string, string> addPrivileges; -3: required map<string, string> delPrivileges; -} - -struct TRoleChanges { -1: required string role; -2: required list<string> addGroups; -3: required list<string> delGroups; -} - -struct TPermissionsUpdate { -1: required bool hasfullImage; -2: required i64 seqNum; -3: required map<string, TPrivilegeChanges> privilegeChanges; -4: required map<string, TRoleChanges> roleChanges; -} - -struct TAuthzUpdateResponse { -1: optional list<TPathsUpdate> authzPathUpdate, -2: optional list<TPermissionsUpdate> authzPermUpdate, -} - -service SentryHDFSService -{ - # HMS Path cache - void handle_hms_notification(1:TPathsUpdate pathsUpdate); - - TAuthzUpdateResponse get_all_authz_updates_from(1:i64 permSeqNum, 2:i64 pathSeqNum); - map<string, list<string>> get_all_related_paths(1:string path, 2:bool exactMatch); -} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/78787d63/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestHMSPaths.java ---------------------------------------------------------------------- diff --git a/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestHMSPaths.java b/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestHMSPaths.java deleted file mode 100644 index 29868ae..0000000 --- a/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestHMSPaths.java +++ /dev/null @@ -1,357 +0,0 @@ -/** - * 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.sentry.hdfs; - -import java.util.List; - -import org.apache.hadoop.fs.Path; -import org.junit.Assert; -import org.junit.Test; - -import com.google.common.collect.Lists; - -public class TestHMSPaths { - - @Test - public void testGetPathElements() { - List<String> as2 = HMSPaths.getPathElements(new String("/a/b")); - List<String> as1 = HMSPaths.getPathElements(new String("/a/b")); - Assert.assertEquals(as1, as2); - - List<String> as = HMSPaths.getPathElements(new String("/a/b")); - Assert.assertEquals(Lists.newArrayList("a", "b"), as); - - as = HMSPaths.getPathElements(new String("//a/b")); - Assert.assertEquals(Lists.newArrayList("a", "b"), as); - - as = HMSPaths.getPathElements(new String("/a//b")); - Assert.assertEquals(Lists.newArrayList("a", "b"), as); - - as = HMSPaths.getPathElements(new String("/a/b/")); - Assert.assertEquals(Lists.newArrayList("a", "b"), as); - - as = HMSPaths.getPathElements(new String("//a//b//")); - Assert.assertEquals(Lists.newArrayList("a", "b"), as); - } - - @Test - public void testEntryType() { - Assert.assertTrue(HMSPaths.EntryType.DIR.isRemoveIfDangling()); - Assert.assertFalse(HMSPaths.EntryType.PREFIX.isRemoveIfDangling()); - Assert.assertFalse( - HMSPaths.EntryType.AUTHZ_OBJECT.isRemoveIfDangling()); - } - - @Test - public void testRootEntry() { - HMSPaths.Entry root = HMSPaths.Entry.createRoot(false); - root.toString(); - Assert.assertNull(root.getParent()); - Assert.assertEquals(HMSPaths.EntryType.DIR, root.getType()); - Assert.assertNull(root.getAuthzObj()); - Assert.assertEquals(Path.SEPARATOR, root.getFullPath()); - Assert.assertTrue(root.getChildren().isEmpty()); - root.delete(); - try { - root.find(null, true); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - try { - root.find(new String[0], true); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - try { - root.find(null, false); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - try { - root.find(new String[0], false); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - Assert.assertNull(root.find(new String[]{"a"}, true)); - Assert.assertNull(root.find(new String[]{"a"}, false)); - Assert.assertNull(root.findPrefixEntry(Lists.newArrayList("a"))); - - root.delete(); - } - - @Test - public void testRootPrefixEntry() { - HMSPaths.Entry root = HMSPaths.Entry.createRoot(true); - root.toString(); - - Assert.assertNull(root.find(new String[]{"a"}, true)); - Assert.assertNull(root.find(new String[]{"a"}, false)); - Assert.assertEquals(root, root.findPrefixEntry(Lists.newArrayList("a"))); - Assert.assertEquals(root, root.findPrefixEntry(Lists.newArrayList("a", "b"))); - - try { - root.createPrefix(Lists.newArrayList("a")); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - } - - @Test - public void testImmediatePrefixEntry() { - HMSPaths.Entry root = HMSPaths.Entry.createRoot(false); - HMSPaths.Entry entry = root.createPrefix(Lists.newArrayList("a")); - entry.toString(); - - Assert.assertEquals(1, root.getChildren().size()); - - Assert.assertEquals(root, entry.getParent()); - Assert.assertEquals(HMSPaths.EntryType.PREFIX, entry.getType()); - Assert.assertEquals("a", entry.getPathElement()); - Assert.assertNull(entry.getAuthzObj()); - Assert.assertEquals(Path.SEPARATOR + "a", entry.getFullPath()); - Assert.assertTrue(entry.getChildren().isEmpty()); - - Assert.assertEquals(entry, root.findPrefixEntry(Lists.newArrayList("a"))); - Assert.assertEquals(entry, root.findPrefixEntry(Lists.newArrayList("a", "b"))); - - Assert.assertNull(root.find(new String[]{"a", "b"}, false)); - - Assert.assertNull(root.find(new String[]{"b"}, false)); - Assert.assertNull(root.findPrefixEntry(Lists.newArrayList("b"))); - - try { - root.createPrefix(Lists.newArrayList("a", "b")); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - - try { - root.createPrefix(Lists.newArrayList("a", "b", "c")); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - - entry.delete(); - Assert.assertTrue(root.getChildren().isEmpty()); - } - - @Test - public void testFurtherPrefixEntry() { - HMSPaths.Entry root = HMSPaths.Entry.createRoot(false); - HMSPaths.Entry entry = root.createPrefix(Lists.newArrayList("a", "b")); - entry.toString(); - - Assert.assertEquals(1, root.getChildren().size()); - - Assert.assertEquals(root, entry.getParent().getParent()); - Assert.assertEquals(HMSPaths.EntryType.PREFIX, entry.getType()); - Assert.assertEquals(HMSPaths.EntryType.DIR, - entry.getParent().getType()); - Assert.assertEquals("b", entry.getPathElement()); - Assert.assertEquals("a", entry.getParent().getPathElement()); - Assert.assertNull(entry.getAuthzObj()); - Assert.assertNull(entry.getParent().getAuthzObj()); - Assert.assertEquals(Path.SEPARATOR + "a" + Path.SEPARATOR + "b", - entry.getFullPath()); - Assert.assertEquals(Path.SEPARATOR + "a", entry.getParent().getFullPath()); - Assert.assertTrue(entry.getChildren().isEmpty()); - Assert.assertEquals(1, entry.getParent().getChildren().size()); - - Assert.assertEquals(entry, root.findPrefixEntry(Lists.newArrayList("a", "b"))); - Assert.assertNull(root.findPrefixEntry(Lists.newArrayList("a"))); - - Assert.assertNull(root.find(new String[]{"a", "b", "c"}, false)); - - try { - root.createPrefix(Lists.newArrayList("a", "b")); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - - try { - root.createPrefix(Lists.newArrayList("a", "b", "c")); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - - entry.delete(); - Assert.assertTrue(root.getChildren().isEmpty()); - } - - @Test - public void testImmediateAuthzEntry() { - HMSPaths.Entry root = HMSPaths.Entry.createRoot(false); - HMSPaths.Entry prefix = root.createPrefix(Lists.newArrayList("a", "b")); - - HMSPaths.Entry entry = root.createAuthzObjPath( - Lists.newArrayList("a", "b", "p1"), "A"); - Assert.assertEquals(prefix, entry.getParent()); - Assert.assertEquals(HMSPaths.EntryType.AUTHZ_OBJECT, entry.getType()); - Assert.assertEquals("p1", entry.getPathElement()); - Assert.assertEquals("A", entry.getAuthzObj()); - Assert.assertEquals(Path.SEPARATOR + "a" + Path.SEPARATOR + "b" + - Path.SEPARATOR + "p1", entry.getFullPath()); - - try { - root.createPrefix(Lists.newArrayList("a", "b", "p1", "c")); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - - Assert.assertEquals(entry, root.find(new String[]{"a", "b", "p1"}, true)); - Assert.assertEquals(entry, root.find(new String[]{"a", "b", "p1"}, false)); - Assert.assertEquals(entry, root.find(new String[]{"a", "b", "p1", "c"}, - true)); - Assert.assertNull(root.find(new String[]{"a", "b", "p1", "c"}, false)); - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "p1"))); - - root.find(new String[]{"a", "b", "p1"}, true).delete(); - Assert.assertNull(root.find(new String[]{"a", "b", "p1"}, false)); - Assert.assertNull(root.find(new String[]{"a", "b"}, false)); - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "p1"))); - - } - - @Test - public void testFurtherAuthzEntry() { - HMSPaths.Entry root = HMSPaths.Entry.createRoot(false); - HMSPaths.Entry prefix = root.createPrefix(Lists.newArrayList("a", "b")); - - HMSPaths.Entry entry = root.createAuthzObjPath( - Lists.newArrayList("a", "b", "t", "p1"), "A"); - Assert.assertEquals(prefix, entry.getParent().getParent()); - Assert.assertEquals(HMSPaths.EntryType.AUTHZ_OBJECT, entry.getType()); - Assert.assertEquals("p1", entry.getPathElement()); - Assert.assertEquals("A", entry.getAuthzObj()); - Assert.assertEquals(Path.SEPARATOR + "a" + Path.SEPARATOR + "b" + - Path.SEPARATOR + "t" + Path.SEPARATOR + "p1", entry.getFullPath()); - - try { - root.createPrefix(Lists.newArrayList("a", "b", "p1", "t", "c")); - Assert.fail(); - } catch (IllegalArgumentException ex) { - //NOP - } - - HMSPaths.Entry ep2 = root.createAuthzObjPath( - Lists.newArrayList("a", "b", "t", "p1", "p2"), "A"); - - Assert.assertEquals(HMSPaths.EntryType.AUTHZ_OBJECT, entry.getType()); - Assert.assertEquals("p1", entry.getPathElement()); - Assert.assertEquals("A", entry.getAuthzObj()); - - Assert.assertEquals(HMSPaths.EntryType.AUTHZ_OBJECT, ep2.getType()); - Assert.assertEquals("p2", ep2.getPathElement()); - Assert.assertEquals("A", entry.getAuthzObj()); - - Assert.assertEquals(entry, root.find(new String[]{"a", "b", "t", "p1"}, - true)); - Assert.assertEquals(entry, root.find(new String[]{"a", "b", "t", "p1"}, - false)); - Assert.assertEquals(entry, root.find(new String[]{"a", "b", "t", "p1", "c"}, - true)); - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p1", "c"}, false)); - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "t", "p1"))); - - Assert.assertEquals(ep2, root.find(new String[]{"a", "b", "t", "p1", "p2"}, - true)); - Assert.assertEquals(ep2, root.find(new String[]{"a", "b", "t", "p1", "p2"}, - false)); - Assert.assertEquals(ep2, root.find(new String[]{"a", "b", "t", "p1", "p2", "c"}, - true)); - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p1", "p2", "c"}, false)); - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "t", "p1", "p2"))); - - root.find(new String[]{"a", "b", "t", "p1"}, false).delete(); - - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p1"}, - true)); - Assert.assertEquals(HMSPaths.EntryType.DIR, entry.getType()); - Assert.assertNull(entry.getAuthzObj()); - - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p1"}, false)); - Assert.assertNull(root.find(new String[]{"a", "b", "t"}, false)); - Assert.assertNull(root.find(new String[]{"a", "b"}, false)); - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "t", "p1"))); - - Assert.assertNotNull(root.find(new String[]{"a", "b", "t", "p1", "p2"}, false)); - root.find(new String[]{"a", "b", "t", "p1", "p2"}, false).delete(); - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p1"}, false)); - Assert.assertNull(root.find(new String[]{"a", "b", "t"}, false)); - Assert.assertNull(root.find(new String[]{"a", "b"}, false)); - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "t", "p1"))); - - } - - @Test - public void testMultipleAuthzEntry() { - HMSPaths.Entry root = HMSPaths.Entry.createRoot(false); - HMSPaths.Entry prefix = root.createPrefix(Lists.newArrayList("a", "b")); - - HMSPaths.Entry e1 = root.createAuthzObjPath( - Lists.newArrayList("a", "b", "t", "p1"), "A"); - HMSPaths.Entry e2 = root.createAuthzObjPath( - Lists.newArrayList("a", "b", "t", "p2"), "A"); - - - Assert.assertEquals(e1, root.find(new String[]{"a", "b", "t", "p1"}, true)); - Assert.assertEquals(e1, root.find(new String[]{"a", "b", "t", "p1"}, - false)); - Assert.assertEquals(e1, root.find(new String[]{"a", "b", "t", "p1", "c"}, - true)); - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p1", "c"}, false)); - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "t", "p1"))); - - Assert.assertEquals(e2, root.find(new String[]{"a", "b", "t", "p2"}, true)); - Assert.assertEquals(e2, root.find(new String[]{"a", "b", "t", "p2"}, - false)); - Assert.assertEquals(e2, root.find(new String[]{"a", "b", "t", "p2", "c"}, - true)); - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p2", "c"}, false)); - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "t", "p2"))); - - root.find(new String[]{"a", "b", "t", "p1"}, true).delete(); - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p1"}, false)); - - root.find(new String[]{"a", "b", "t", "p2"}, true).delete(); - Assert.assertNull(root.find(new String[]{"a", "b", "t", "p2"}, false)); - Assert.assertNull(root.find(new String[]{"a", "b", "t"}, false)); - - Assert.assertEquals(prefix, root.findPrefixEntry( - Lists.newArrayList("a", "b", "t", "p3"))); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/78787d63/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestHMSPathsFullDump.java ---------------------------------------------------------------------- diff --git a/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestHMSPathsFullDump.java b/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestHMSPathsFullDump.java deleted file mode 100644 index dcd70c1..0000000 --- a/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestHMSPathsFullDump.java +++ /dev/null @@ -1,97 +0,0 @@ -/** - * 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.sentry.hdfs; - -import junit.framework.Assert; - -import org.apache.sentry.hdfs.service.thrift.TPathsDump; -import org.apache.thrift.TDeserializer; -import org.apache.thrift.TException; -import org.apache.thrift.TSerializer; -import org.apache.thrift.protocol.TCompactProtocol; -import org.junit.Test; - -import com.google.common.collect.Lists; - -public class TestHMSPathsFullDump { - - @Test - public void testDumpAndInitialize() { - HMSPaths hmsPaths = new HMSPaths(new String[] {"/user/hive/warehouse"}); - hmsPaths._addAuthzObject("db1", Lists.newArrayList("/user/hive/warehouse/db1")); - hmsPaths._addAuthzObject("db1.tbl11", Lists.newArrayList("/user/hive/warehouse/db1/tbl11")); - hmsPaths._addPathsToAuthzObject("db1.tbl11", Lists.newArrayList( - "/user/hive/warehouse/db1/tbl11/part111", - "/user/hive/warehouse/db1/tbl11/part112", - "/user/hive/warehouse/db1/tbl11/p1=1/p2=x")); - - Assert.assertEquals("db1", hmsPaths.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1"}, false)); - Assert.assertEquals("db1.tbl11", hmsPaths.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1", "tbl11"}, false)); - Assert.assertEquals("db1.tbl11", hmsPaths.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1", "tbl11", "part111"}, false)); - Assert.assertEquals("db1.tbl11", hmsPaths.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1", "tbl11", "part112"}, false)); - - Assert.assertEquals("db1.tbl11", hmsPaths.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1", "tbl11", "p1=1", "p2=x"}, false)); - Assert.assertEquals("db1.tbl11", hmsPaths.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1", "tbl11", "p1=1"}, true)); - - HMSPathsSerDe serDe = hmsPaths.getPathsDump(); - TPathsDump pathsDump = serDe.createPathsDump(); - HMSPaths hmsPaths2 = serDe.initializeFromDump(pathsDump); - - Assert.assertEquals("db1", hmsPaths2.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1"}, false)); - Assert.assertEquals("db1.tbl11", hmsPaths2.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1", "tbl11"}, false)); - Assert.assertEquals("db1.tbl11", hmsPaths2.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1", "tbl11", "part111"}, false)); - Assert.assertEquals("db1.tbl11", hmsPaths2.findAuthzObject(new String[]{"user", "hive", "warehouse", "db1", "tbl11", "part112"}, false)); - } - - @Test - public void testThrftSerialization() throws TException { - HMSPaths hmsPaths = new HMSPaths(new String[] {"/"}); - String prefix = "/user/hive/warehouse/"; - for (int dbNum = 0; dbNum < 1; dbNum++) { - String dbName = "db" + dbNum; - hmsPaths._addAuthzObject(dbName, Lists.newArrayList(prefix + dbName)); - for (int tblNum = 0; tblNum < 1000000; tblNum++) { - String tblName = "tbl" + tblNum; - hmsPaths._addAuthzObject(dbName + "." + tblName, Lists.newArrayList(prefix + dbName + "/" + tblName)); - for (int partNum = 0; partNum < 1; partNum++) { - String partName = "part" + partNum; - hmsPaths - ._addPathsToAuthzObject( - dbName + "." + tblName, - Lists.newArrayList(prefix + dbName + "/" + tblName + "/" - + partName)); - } - } - } - HMSPathsSerDe serDe = hmsPaths.getPathsDump(); - long t1 = System.currentTimeMillis(); - TPathsDump pathsDump = serDe.createPathsDump(); - byte[] ser = new TSerializer(new TCompactProtocol.Factory()).serialize(pathsDump); - long serTime = System.currentTimeMillis() - t1; - System.out.println("Serialization Time: " + serTime + ", " + ser.length); - - t1 = System.currentTimeMillis(); - TPathsDump tPathsDump = new TPathsDump(); - new TDeserializer(new TCompactProtocol.Factory()).deserialize(tPathsDump, ser); - HMSPaths fromDump = serDe.initializeFromDump(tPathsDump); - System.out.println("Deserialization Time: " + (System.currentTimeMillis() - t1)); - Assert.assertEquals("db9.tbl999", fromDump.findAuthzObject(new String[]{"user", "hive", "warehouse", "db0", "tbl999"}, false)); - Assert.assertEquals("db9.tbl999", fromDump.findAuthzObject(new String[]{"user", "hive", "warehouse", "db0", "tbl999", "part5"}, false)); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/78787d63/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestUpdateableAuthzPaths.java ---------------------------------------------------------------------- diff --git a/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestUpdateableAuthzPaths.java b/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestUpdateableAuthzPaths.java deleted file mode 100644 index 9d0d366..0000000 --- a/sentry-hdfs/src/test/java/org/apache/sentry/hdfs/TestUpdateableAuthzPaths.java +++ /dev/null @@ -1,136 +0,0 @@ -/** - * 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.sentry.hdfs; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; - -import java.util.concurrent.locks.ReentrantReadWriteLock; - -import org.apache.sentry.hdfs.service.thrift.TPathChanges; -import org.junit.Test; - -import com.google.common.collect.Lists; - -public class TestUpdateableAuthzPaths { - - @Test - public void testFullUpdate() { - HMSPaths hmsPaths = createBaseHMSPaths(1, 1); - assertEquals("db1", hmsPaths.findAuthzObjectExactMatch(new String[]{"db1"})); - assertEquals("db1.tbl11", hmsPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11"})); - assertEquals("db1.tbl11", hmsPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part111"})); - assertEquals("db1.tbl11", hmsPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part112"})); - - UpdateableAuthzPaths authzPaths = new UpdateableAuthzPaths(hmsPaths); - PathsUpdate update = new PathsUpdate(1, true); - update.getThriftObject().setPathsDump(authzPaths.getPathsDump().createPathsDump()); - - UpdateableAuthzPaths authzPaths2 = new UpdateableAuthzPaths(new String[] {"/"}); - UpdateableAuthzPaths pre = authzPaths2.updateFull(update); - assertFalse(pre == authzPaths2); - authzPaths2 = pre; - - assertEquals("db1", authzPaths2.findAuthzObjectExactMatch(new String[]{"db1"})); - assertEquals("db1.tbl11", authzPaths2.findAuthzObjectExactMatch(new String[]{"db1", "tbl11"})); - assertEquals("db1.tbl11", authzPaths2.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part111"})); - assertEquals("db1.tbl11", authzPaths2.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part112"})); - - // Ensure Full Update wipes old stuff - UpdateableAuthzPaths authzPaths3 = new UpdateableAuthzPaths(createBaseHMSPaths(2, 1)); - update = new PathsUpdate(2, true); - update.getThriftObject().setPathsDump(authzPaths3.getPathsDump().createPathsDump()); - pre = authzPaths2.updateFull(update); - assertFalse(pre == authzPaths2); - authzPaths2 = pre; - - assertNull(authzPaths2.findAuthzObjectExactMatch(new String[]{"db1"})); - assertNull(authzPaths2.findAuthzObjectExactMatch(new String[]{"db1", "tbl11"})); - - assertEquals("db2", authzPaths2.findAuthzObjectExactMatch(new String[]{"db2"})); - assertEquals("db2.tbl21", authzPaths2.findAuthzObjectExactMatch(new String[]{"db2", "tbl21"})); - assertEquals("db2.tbl21", authzPaths2.findAuthzObjectExactMatch(new String[]{"db2", "tbl21", "part211"})); - assertEquals("db2.tbl21", authzPaths2.findAuthzObjectExactMatch(new String[]{"db2", "tbl21", "part212"})); - } - - @Test - public void testPartialUpdateAddPath() { - HMSPaths hmsPaths = createBaseHMSPaths(1, 1); - UpdateableAuthzPaths authzPaths = new UpdateableAuthzPaths(hmsPaths); - ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); - // Create table - PathsUpdate update = new PathsUpdate(2, false); - TPathChanges pathChange = update.newPathChange("db1.tbl12"); - pathChange.addToAddPaths(PathsUpdate.cleanPath("file:///db1/tbl12")); - authzPaths.updatePartial(Lists.newArrayList(update), lock); - - // Add partition - update = new PathsUpdate(3, false); - pathChange = update.newPathChange("db1.tbl12"); - pathChange.addToAddPaths(PathsUpdate.cleanPath("file:///db1/tbl12/part121")); - authzPaths.updatePartial(Lists.newArrayList(update), lock); - - // Ensure no change in existing Paths - assertEquals("db1", authzPaths.findAuthzObjectExactMatch(new String[]{"db1"})); - assertEquals("db1.tbl11", authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11"})); - assertEquals("db1.tbl11", authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part111"})); - assertEquals("db1.tbl11", authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part112"})); - - // Verify new Paths - assertEquals("db1.tbl12", authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl12"})); - assertEquals("db1.tbl12", authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl12", "part121"})); - } - - @Test - public void testPartialUpdateDelPath() { - HMSPaths hmsPaths = createBaseHMSPaths(1, 1); - UpdateableAuthzPaths authzPaths = new UpdateableAuthzPaths(hmsPaths); - ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); - assertEquals("db1.tbl11", authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11"})); - assertEquals("db1.tbl11", authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part111"})); - - // Drop partition - PathsUpdate update = new PathsUpdate(2, false); - TPathChanges pathChange = update.newPathChange("db1.tbl11"); - pathChange.addToDelPaths(PathsUpdate.cleanPath("file:///db1/tbl11/part111")); - authzPaths.updatePartial(Lists.newArrayList(update), lock); - - // Verify Paths deleted - assertNull(authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part111"})); - - // Verify rest ok - assertEquals("db1.tbl11", authzPaths.findAuthzObjectExactMatch(new String[]{"db1", "tbl11", "part112"})); - } - - private HMSPaths createBaseHMSPaths(int dbNum, int tblNum) { - String db = "db" + dbNum; - String tbl = "tbl" + dbNum + "" + tblNum; - String fullTbl = db + "." + tbl; - String dbPath = "/" + db; - String tblPath = "/" + db + "/" + tbl; - String partPath = tblPath + "/part" + dbNum + "" + tblNum; - HMSPaths hmsPaths = new HMSPaths(new String[] {"/"}); - hmsPaths._addAuthzObject(db, Lists.newArrayList(dbPath)); - hmsPaths._addAuthzObject(fullTbl, Lists.newArrayList(tblPath)); - hmsPaths._addPathsToAuthzObject(fullTbl, Lists.newArrayList( - partPath + "1", partPath + "2" )); - return hmsPaths; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/78787d63/sentry-hdfs/src/test/resources/hdfs-sentry.xml ---------------------------------------------------------------------- diff --git a/sentry-hdfs/src/test/resources/hdfs-sentry.xml b/sentry-hdfs/src/test/resources/hdfs-sentry.xml deleted file mode 100644 index c23a431..0000000 --- a/sentry-hdfs/src/test/resources/hdfs-sentry.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0"?> -<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> -<!-- - 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. ---> - -<configuration> - <!-- dummy file that gets rewritten by testcases in target test classpath --> -</configuration> http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/78787d63/sentry-provider/sentry-provider-db/pom.xml ---------------------------------------------------------------------- diff --git a/sentry-provider/sentry-provider-db/pom.xml b/sentry-provider/sentry-provider-db/pom.xml index b8da31b..29b1f13 100644 --- a/sentry-provider/sentry-provider-db/pom.xml +++ b/sentry-provider/sentry-provider-db/pom.xml @@ -77,10 +77,6 @@ limitations under the License. </dependency> <dependency> <groupId>org.apache.sentry</groupId> - <artifactId>sentry-hdfs</artifactId> - </dependency> - <dependency> - <groupId>org.apache.sentry</groupId> <artifactId>sentry-core-common</artifactId> </dependency> <dependency> @@ -127,11 +123,6 @@ limitations under the License. <artifactId>ant-contrib</artifactId> </dependency> <dependency> - <groupId>org.apache.sentry</groupId> - <artifactId>sentry-hdfs-int</artifactId> - <scope>test</scope> - </dependency> - <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-minikdc</artifactId> <scope>test</scope> http://git-wip-us.apache.org/repos/asf/incubator-sentry/blob/78787d63/sentry-provider/sentry-provider-db/src/gen/thrift/gen-javabean/org/apache/sentry/provider/db/service/thrift/TListSentryPrivilegesByAuthRequest.java ---------------------------------------------------------------------- diff --git a/sentry-provider/sentry-provider-db/src/gen/thrift/gen-javabean/org/apache/sentry/provider/db/service/thrift/TListSentryPrivilegesByAuthRequest.java b/sentry-provider/sentry-provider-db/src/gen/thrift/gen-javabean/org/apache/sentry/provider/db/service/thrift/TListSentryPrivilegesByAuthRequest.java deleted file mode 100644 index 2bd860e..0000000 --- a/sentry-provider/sentry-provider-db/src/gen/thrift/gen-javabean/org/apache/sentry/provider/db/service/thrift/TListSentryPrivilegesByAuthRequest.java +++ /dev/null @@ -1,914 +0,0 @@ -/** - * Autogenerated by Thrift Compiler (0.9.0) - * - * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING - * @generated - */ -package org.apache.sentry.provider.db.service.thrift; - -import org.apache.commons.lang.builder.HashCodeBuilder; -import org.apache.thrift.scheme.IScheme; -import org.apache.thrift.scheme.SchemeFactory; -import org.apache.thrift.scheme.StandardScheme; - -import org.apache.thrift.scheme.TupleScheme; -import org.apache.thrift.protocol.TTupleProtocol; -import org.apache.thrift.protocol.TProtocolException; -import org.apache.thrift.EncodingUtils; -import org.apache.thrift.TException; -import java.util.List; -import java.util.ArrayList; -import java.util.Map; -import java.util.HashMap; -import java.util.EnumMap; -import java.util.Set; -import java.util.HashSet; -import java.util.EnumSet; -import java.util.Collections; -import java.util.BitSet; -import java.nio.ByteBuffer; -import java.util.Arrays; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class TListSentryPrivilegesByAuthRequest implements org.apache.thrift.TBase<TListSentryPrivilegesByAuthRequest, TListSentryPrivilegesByAuthRequest._Fields>, java.io.Serializable, Cloneable { - private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("TListSentryPrivilegesByAuthRequest"); - - private static final org.apache.thrift.protocol.TField PROTOCOL_VERSION_FIELD_DESC = new org.apache.thrift.protocol.TField("protocol_version", org.apache.thrift.protocol.TType.I32, (short)1); - private static final org.apache.thrift.protocol.TField REQUESTOR_USER_NAME_FIELD_DESC = new org.apache.thrift.protocol.TField("requestorUserName", org.apache.thrift.protocol.TType.STRING, (short)2); - private static final org.apache.thrift.protocol.TField AUTHORIZABLE_SET_FIELD_DESC = new org.apache.thrift.protocol.TField("authorizableSet", org.apache.thrift.protocol.TType.SET, (short)3); - private static final org.apache.thrift.protocol.TField GROUPS_FIELD_DESC = new org.apache.thrift.protocol.TField("groups", org.apache.thrift.protocol.TType.SET, (short)4); - private static final org.apache.thrift.protocol.TField ROLE_SET_FIELD_DESC = new org.apache.thrift.protocol.TField("roleSet", org.apache.thrift.protocol.TType.STRUCT, (short)5); - - private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>(); - static { - schemes.put(StandardScheme.class, new TListSentryPrivilegesByAuthRequestStandardSchemeFactory()); - schemes.put(TupleScheme.class, new TListSentryPrivilegesByAuthRequestTupleSchemeFactory()); - } - - private int protocol_version; // required - private String requestorUserName; // required - private Set<TSentryAuthorizable> authorizableSet; // required - private Set<String> groups; // optional - private TSentryActiveRoleSet roleSet; // optional - - /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ - public enum _Fields implements org.apache.thrift.TFieldIdEnum { - PROTOCOL_VERSION((short)1, "protocol_version"), - REQUESTOR_USER_NAME((short)2, "requestorUserName"), - AUTHORIZABLE_SET((short)3, "authorizableSet"), - GROUPS((short)4, "groups"), - ROLE_SET((short)5, "roleSet"); - - private static final Map<String, _Fields> byName = new HashMap<String, _Fields>(); - - static { - for (_Fields field : EnumSet.allOf(_Fields.class)) { - byName.put(field.getFieldName(), field); - } - } - - /** - * Find the _Fields constant that matches fieldId, or null if its not found. - */ - public static _Fields findByThriftId(int fieldId) { - switch(fieldId) { - case 1: // PROTOCOL_VERSION - return PROTOCOL_VERSION; - case 2: // REQUESTOR_USER_NAME - return REQUESTOR_USER_NAME; - case 3: // AUTHORIZABLE_SET - return AUTHORIZABLE_SET; - case 4: // GROUPS - return GROUPS; - case 5: // ROLE_SET - return ROLE_SET; - default: - return null; - } - } - - /** - * Find the _Fields constant that matches fieldId, throwing an exception - * if it is not found. - */ - public static _Fields findByThriftIdOrThrow(int fieldId) { - _Fields fields = findByThriftId(fieldId); - if (fields == null) throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!"); - return fields; - } - - /** - * Find the _Fields constant that matches name, or null if its not found. - */ - public static _Fields findByName(String name) { - return byName.get(name); - } - - private final short _thriftId; - private final String _fieldName; - - _Fields(short thriftId, String fieldName) { - _thriftId = thriftId; - _fieldName = fieldName; - } - - public short getThriftFieldId() { - return _thriftId; - } - - public String getFieldName() { - return _fieldName; - } - } - - // isset id assignments - private static final int __PROTOCOL_VERSION_ISSET_ID = 0; - private byte __isset_bitfield = 0; - private _Fields optionals[] = {_Fields.GROUPS,_Fields.ROLE_SET}; - public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap; - static { - Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class); - tmpMap.put(_Fields.PROTOCOL_VERSION, new org.apache.thrift.meta_data.FieldMetaData("protocol_version", org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I32))); - tmpMap.put(_Fields.REQUESTOR_USER_NAME, new org.apache.thrift.meta_data.FieldMetaData("requestorUserName", org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); - tmpMap.put(_Fields.AUTHORIZABLE_SET, new org.apache.thrift.meta_data.FieldMetaData("authorizableSet", org.apache.thrift.TFieldRequirementType.REQUIRED, - new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET, - new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TSentryAuthorizable.class)))); - tmpMap.put(_Fields.GROUPS, new org.apache.thrift.meta_data.FieldMetaData("groups", org.apache.thrift.TFieldRequirementType.OPTIONAL, - new org.apache.thrift.meta_data.SetMetaData(org.apache.thrift.protocol.TType.SET, - new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)))); - tmpMap.put(_Fields.ROLE_SET, new org.apache.thrift.meta_data.FieldMetaData("roleSet", org.apache.thrift.TFieldRequirementType.OPTIONAL, - new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, TSentryActiveRoleSet.class))); - metaDataMap = Collections.unmodifiableMap(tmpMap); - org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TListSentryPrivilegesByAuthRequest.class, metaDataMap); - } - - public TListSentryPrivilegesByAuthRequest() { - this.protocol_version = 1; - - } - - public TListSentryPrivilegesByAuthRequest( - int protocol_version, - String requestorUserName, - Set<TSentryAuthorizable> authorizableSet) - { - this(); - this.protocol_version = protocol_version; - setProtocol_versionIsSet(true); - this.requestorUserName = requestorUserName; - this.authorizableSet = authorizableSet; - } - - /** - * Performs a deep copy on <i>other</i>. - */ - public TListSentryPrivilegesByAuthRequest(TListSentryPrivilegesByAuthRequest other) { - __isset_bitfield = other.__isset_bitfield; - this.protocol_version = other.protocol_version; - if (other.isSetRequestorUserName()) { - this.requestorUserName = other.requestorUserName; - } - if (other.isSetAuthorizableSet()) { - Set<TSentryAuthorizable> __this__authorizableSet = new HashSet<TSentryAuthorizable>(); - for (TSentryAuthorizable other_element : other.authorizableSet) { - __this__authorizableSet.add(new TSentryAuthorizable(other_element)); - } - this.authorizableSet = __this__authorizableSet; - } - if (other.isSetGroups()) { - Set<String> __this__groups = new HashSet<String>(); - for (String other_element : other.groups) { - __this__groups.add(other_element); - } - this.groups = __this__groups; - } - if (other.isSetRoleSet()) { - this.roleSet = new TSentryActiveRoleSet(other.roleSet); - } - } - - public TListSentryPrivilegesByAuthRequest deepCopy() { - return new TListSentryPrivilegesByAuthRequest(this); - } - - @Override - public void clear() { - this.protocol_version = 1; - - this.requestorUserName = null; - this.authorizableSet = null; - this.groups = null; - this.roleSet = null; - } - - public int getProtocol_version() { - return this.protocol_version; - } - - public void setProtocol_version(int protocol_version) { - this.protocol_version = protocol_version; - setProtocol_versionIsSet(true); - } - - public void unsetProtocol_version() { - __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PROTOCOL_VERSION_ISSET_ID); - } - - /** Returns true if field protocol_version is set (has been assigned a value) and false otherwise */ - public boolean isSetProtocol_version() { - return EncodingUtils.testBit(__isset_bitfield, __PROTOCOL_VERSION_ISSET_ID); - } - - public void setProtocol_versionIsSet(boolean value) { - __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PROTOCOL_VERSION_ISSET_ID, value); - } - - public String getRequestorUserName() { - return this.requestorUserName; - } - - public void setRequestorUserName(String requestorUserName) { - this.requestorUserName = requestorUserName; - } - - public void unsetRequestorUserName() { - this.requestorUserName = null; - } - - /** Returns true if field requestorUserName is set (has been assigned a value) and false otherwise */ - public boolean isSetRequestorUserName() { - return this.requestorUserName != null; - } - - public void setRequestorUserNameIsSet(boolean value) { - if (!value) { - this.requestorUserName = null; - } - } - - public int getAuthorizableSetSize() { - return (this.authorizableSet == null) ? 0 : this.authorizableSet.size(); - } - - public java.util.Iterator<TSentryAuthorizable> getAuthorizableSetIterator() { - return (this.authorizableSet == null) ? null : this.authorizableSet.iterator(); - } - - public void addToAuthorizableSet(TSentryAuthorizable elem) { - if (this.authorizableSet == null) { - this.authorizableSet = new HashSet<TSentryAuthorizable>(); - } - this.authorizableSet.add(elem); - } - - public Set<TSentryAuthorizable> getAuthorizableSet() { - return this.authorizableSet; - } - - public void setAuthorizableSet(Set<TSentryAuthorizable> authorizableSet) { - this.authorizableSet = authorizableSet; - } - - public void unsetAuthorizableSet() { - this.authorizableSet = null; - } - - /** Returns true if field authorizableSet is set (has been assigned a value) and false otherwise */ - public boolean isSetAuthorizableSet() { - return this.authorizableSet != null; - } - - public void setAuthorizableSetIsSet(boolean value) { - if (!value) { - this.authorizableSet = null; - } - } - - public int getGroupsSize() { - return (this.groups == null) ? 0 : this.groups.size(); - } - - public java.util.Iterator<String> getGroupsIterator() { - return (this.groups == null) ? null : this.groups.iterator(); - } - - public void addToGroups(String elem) { - if (this.groups == null) { - this.groups = new HashSet<String>(); - } - this.groups.add(elem); - } - - public Set<String> getGroups() { - return this.groups; - } - - public void setGroups(Set<String> groups) { - this.groups = groups; - } - - public void unsetGroups() { - this.groups = null; - } - - /** Returns true if field groups is set (has been assigned a value) and false otherwise */ - public boolean isSetGroups() { - return this.groups != null; - } - - public void setGroupsIsSet(boolean value) { - if (!value) { - this.groups = null; - } - } - - public TSentryActiveRoleSet getRoleSet() { - return this.roleSet; - } - - public void setRoleSet(TSentryActiveRoleSet roleSet) { - this.roleSet = roleSet; - } - - public void unsetRoleSet() { - this.roleSet = null; - } - - /** Returns true if field roleSet is set (has been assigned a value) and false otherwise */ - public boolean isSetRoleSet() { - return this.roleSet != null; - } - - public void setRoleSetIsSet(boolean value) { - if (!value) { - this.roleSet = null; - } - } - - public void setFieldValue(_Fields field, Object value) { - switch (field) { - case PROTOCOL_VERSION: - if (value == null) { - unsetProtocol_version(); - } else { - setProtocol_version((Integer)value); - } - break; - - case REQUESTOR_USER_NAME: - if (value == null) { - unsetRequestorUserName(); - } else { - setRequestorUserName((String)value); - } - break; - - case AUTHORIZABLE_SET: - if (value == null) { - unsetAuthorizableSet(); - } else { - setAuthorizableSet((Set<TSentryAuthorizable>)value); - } - break; - - case GROUPS: - if (value == null) { - unsetGroups(); - } else { - setGroups((Set<String>)value); - } - break; - - case ROLE_SET: - if (value == null) { - unsetRoleSet(); - } else { - setRoleSet((TSentryActiveRoleSet)value); - } - break; - - } - } - - public Object getFieldValue(_Fields field) { - switch (field) { - case PROTOCOL_VERSION: - return Integer.valueOf(getProtocol_version()); - - case REQUESTOR_USER_NAME: - return getRequestorUserName(); - - case AUTHORIZABLE_SET: - return getAuthorizableSet(); - - case GROUPS: - return getGroups(); - - case ROLE_SET: - return getRoleSet(); - - } - throw new IllegalStateException(); - } - - /** Returns true if field corresponding to fieldID is set (has been assigned a value) and false otherwise */ - public boolean isSet(_Fields field) { - if (field == null) { - throw new IllegalArgumentException(); - } - - switch (field) { - case PROTOCOL_VERSION: - return isSetProtocol_version(); - case REQUESTOR_USER_NAME: - return isSetRequestorUserName(); - case AUTHORIZABLE_SET: - return isSetAuthorizableSet(); - case GROUPS: - return isSetGroups(); - case ROLE_SET: - return isSetRoleSet(); - } - throw new IllegalStateException(); - } - - @Override - public boolean equals(Object that) { - if (that == null) - return false; - if (that instanceof TListSentryPrivilegesByAuthRequest) - return this.equals((TListSentryPrivilegesByAuthRequest)that); - return false; - } - - public boolean equals(TListSentryPrivilegesByAuthRequest that) { - if (that == null) - return false; - - boolean this_present_protocol_version = true; - boolean that_present_protocol_version = true; - if (this_present_protocol_version || that_present_protocol_version) { - if (!(this_present_protocol_version && that_present_protocol_version)) - return false; - if (this.protocol_version != that.protocol_version) - return false; - } - - boolean this_present_requestorUserName = true && this.isSetRequestorUserName(); - boolean that_present_requestorUserName = true && that.isSetRequestorUserName(); - if (this_present_requestorUserName || that_present_requestorUserName) { - if (!(this_present_requestorUserName && that_present_requestorUserName)) - return false; - if (!this.requestorUserName.equals(that.requestorUserName)) - return false; - } - - boolean this_present_authorizableSet = true && this.isSetAuthorizableSet(); - boolean that_present_authorizableSet = true && that.isSetAuthorizableSet(); - if (this_present_authorizableSet || that_present_authorizableSet) { - if (!(this_present_authorizableSet && that_present_authorizableSet)) - return false; - if (!this.authorizableSet.equals(that.authorizableSet)) - return false; - } - - boolean this_present_groups = true && this.isSetGroups(); - boolean that_present_groups = true && that.isSetGroups(); - if (this_present_groups || that_present_groups) { - if (!(this_present_groups && that_present_groups)) - return false; - if (!this.groups.equals(that.groups)) - return false; - } - - boolean this_present_roleSet = true && this.isSetRoleSet(); - boolean that_present_roleSet = true && that.isSetRoleSet(); - if (this_present_roleSet || that_present_roleSet) { - if (!(this_present_roleSet && that_present_roleSet)) - return false; - if (!this.roleSet.equals(that.roleSet)) - return false; - } - - return true; - } - - @Override - public int hashCode() { - HashCodeBuilder builder = new HashCodeBuilder(); - - boolean present_protocol_version = true; - builder.append(present_protocol_version); - if (present_protocol_version) - builder.append(protocol_version); - - boolean present_requestorUserName = true && (isSetRequestorUserName()); - builder.append(present_requestorUserName); - if (present_requestorUserName) - builder.append(requestorUserName); - - boolean present_authorizableSet = true && (isSetAuthorizableSet()); - builder.append(present_authorizableSet); - if (present_authorizableSet) - builder.append(authorizableSet); - - boolean present_groups = true && (isSetGroups()); - builder.append(present_groups); - if (present_groups) - builder.append(groups); - - boolean present_roleSet = true && (isSetRoleSet()); - builder.append(present_roleSet); - if (present_roleSet) - builder.append(roleSet); - - return builder.toHashCode(); - } - - public int compareTo(TListSentryPrivilegesByAuthRequest other) { - if (!getClass().equals(other.getClass())) { - return getClass().getName().compareTo(other.getClass().getName()); - } - - int lastComparison = 0; - TListSentryPrivilegesByAuthRequest typedOther = (TListSentryPrivilegesByAuthRequest)other; - - lastComparison = Boolean.valueOf(isSetProtocol_version()).compareTo(typedOther.isSetProtocol_version()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetProtocol_version()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.protocol_version, typedOther.protocol_version); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetRequestorUserName()).compareTo(typedOther.isSetRequestorUserName()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetRequestorUserName()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.requestorUserName, typedOther.requestorUserName); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetAuthorizableSet()).compareTo(typedOther.isSetAuthorizableSet()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetAuthorizableSet()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.authorizableSet, typedOther.authorizableSet); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetGroups()).compareTo(typedOther.isSetGroups()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetGroups()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.groups, typedOther.groups); - if (lastComparison != 0) { - return lastComparison; - } - } - lastComparison = Boolean.valueOf(isSetRoleSet()).compareTo(typedOther.isSetRoleSet()); - if (lastComparison != 0) { - return lastComparison; - } - if (isSetRoleSet()) { - lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.roleSet, typedOther.roleSet); - if (lastComparison != 0) { - return lastComparison; - } - } - return 0; - } - - public _Fields fieldForId(int fieldId) { - return _Fields.findByThriftId(fieldId); - } - - public void read(org.apache.thrift.protocol.TProtocol iprot) throws org.apache.thrift.TException { - schemes.get(iprot.getScheme()).getScheme().read(iprot, this); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot) throws org.apache.thrift.TException { - schemes.get(oprot.getScheme()).getScheme().write(oprot, this); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder("TListSentryPrivilegesByAuthRequest("); - boolean first = true; - - sb.append("protocol_version:"); - sb.append(this.protocol_version); - first = false; - if (!first) sb.append(", "); - sb.append("requestorUserName:"); - if (this.requestorUserName == null) { - sb.append("null"); - } else { - sb.append(this.requestorUserName); - } - first = false; - if (!first) sb.append(", "); - sb.append("authorizableSet:"); - if (this.authorizableSet == null) { - sb.append("null"); - } else { - sb.append(this.authorizableSet); - } - first = false; - if (isSetGroups()) { - if (!first) sb.append(", "); - sb.append("groups:"); - if (this.groups == null) { - sb.append("null"); - } else { - sb.append(this.groups); - } - first = false; - } - if (isSetRoleSet()) { - if (!first) sb.append(", "); - sb.append("roleSet:"); - if (this.roleSet == null) { - sb.append("null"); - } else { - sb.append(this.roleSet); - } - first = false; - } - sb.append(")"); - return sb.toString(); - } - - public void validate() throws org.apache.thrift.TException { - // check for required fields - if (!isSetProtocol_version()) { - throw new org.apache.thrift.protocol.TProtocolException("Required field 'protocol_version' is unset! Struct:" + toString()); - } - - if (!isSetRequestorUserName()) { - throw new org.apache.thrift.protocol.TProtocolException("Required field 'requestorUserName' is unset! Struct:" + toString()); - } - - if (!isSetAuthorizableSet()) { - throw new org.apache.thrift.protocol.TProtocolException("Required field 'authorizableSet' is unset! Struct:" + toString()); - } - - // check for sub-struct validity - if (roleSet != null) { - roleSet.validate(); - } - } - - private void writeObject(java.io.ObjectOutputStream out) throws java.io.IOException { - try { - write(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(out))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException { - try { - // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor. - __isset_bitfield = 0; - read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in))); - } catch (org.apache.thrift.TException te) { - throw new java.io.IOException(te); - } - } - - private static class TListSentryPrivilegesByAuthRequestStandardSchemeFactory implements SchemeFactory { - public TListSentryPrivilegesByAuthRequestStandardScheme getScheme() { - return new TListSentryPrivilegesByAuthRequestStandardScheme(); - } - } - - private static class TListSentryPrivilegesByAuthRequestStandardScheme extends StandardScheme<TListSentryPrivilegesByAuthRequest> { - - public void read(org.apache.thrift.protocol.TProtocol iprot, TListSentryPrivilegesByAuthRequest struct) throws org.apache.thrift.TException { - org.apache.thrift.protocol.TField schemeField; - iprot.readStructBegin(); - while (true) - { - schemeField = iprot.readFieldBegin(); - if (schemeField.type == org.apache.thrift.protocol.TType.STOP) { - break; - } - switch (schemeField.id) { - case 1: // PROTOCOL_VERSION - if (schemeField.type == org.apache.thrift.protocol.TType.I32) { - struct.protocol_version = iprot.readI32(); - struct.setProtocol_versionIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 2: // REQUESTOR_USER_NAME - if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { - struct.requestorUserName = iprot.readString(); - struct.setRequestorUserNameIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 3: // AUTHORIZABLE_SET - if (schemeField.type == org.apache.thrift.protocol.TType.SET) { - { - org.apache.thrift.protocol.TSet _set82 = iprot.readSetBegin(); - struct.authorizableSet = new HashSet<TSentryAuthorizable>(2*_set82.size); - for (int _i83 = 0; _i83 < _set82.size; ++_i83) - { - TSentryAuthorizable _elem84; // required - _elem84 = new TSentryAuthorizable(); - _elem84.read(iprot); - struct.authorizableSet.add(_elem84); - } - iprot.readSetEnd(); - } - struct.setAuthorizableSetIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 4: // GROUPS - if (schemeField.type == org.apache.thrift.protocol.TType.SET) { - { - org.apache.thrift.protocol.TSet _set85 = iprot.readSetBegin(); - struct.groups = new HashSet<String>(2*_set85.size); - for (int _i86 = 0; _i86 < _set85.size; ++_i86) - { - String _elem87; // required - _elem87 = iprot.readString(); - struct.groups.add(_elem87); - } - iprot.readSetEnd(); - } - struct.setGroupsIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - case 5: // ROLE_SET - if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) { - struct.roleSet = new TSentryActiveRoleSet(); - struct.roleSet.read(iprot); - struct.setRoleSetIsSet(true); - } else { - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - break; - default: - org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); - } - iprot.readFieldEnd(); - } - iprot.readStructEnd(); - struct.validate(); - } - - public void write(org.apache.thrift.protocol.TProtocol oprot, TListSentryPrivilegesByAuthRequest struct) throws org.apache.thrift.TException { - struct.validate(); - - oprot.writeStructBegin(STRUCT_DESC); - oprot.writeFieldBegin(PROTOCOL_VERSION_FIELD_DESC); - oprot.writeI32(struct.protocol_version); - oprot.writeFieldEnd(); - if (struct.requestorUserName != null) { - oprot.writeFieldBegin(REQUESTOR_USER_NAME_FIELD_DESC); - oprot.writeString(struct.requestorUserName); - oprot.writeFieldEnd(); - } - if (struct.authorizableSet != null) { - oprot.writeFieldBegin(AUTHORIZABLE_SET_FIELD_DESC); - { - oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRUCT, struct.authorizableSet.size())); - for (TSentryAuthorizable _iter88 : struct.authorizableSet) - { - _iter88.write(oprot); - } - oprot.writeSetEnd(); - } - oprot.writeFieldEnd(); - } - if (struct.groups != null) { - if (struct.isSetGroups()) { - oprot.writeFieldBegin(GROUPS_FIELD_DESC); - { - oprot.writeSetBegin(new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, struct.groups.size())); - for (String _iter89 : struct.groups) - { - oprot.writeString(_iter89); - } - oprot.writeSetEnd(); - } - oprot.writeFieldEnd(); - } - } - if (struct.roleSet != null) { - if (struct.isSetRoleSet()) { - oprot.writeFieldBegin(ROLE_SET_FIELD_DESC); - struct.roleSet.write(oprot); - oprot.writeFieldEnd(); - } - } - oprot.writeFieldStop(); - oprot.writeStructEnd(); - } - - } - - private static class TListSentryPrivilegesByAuthRequestTupleSchemeFactory implements SchemeFactory { - public TListSentryPrivilegesByAuthRequestTupleScheme getScheme() { - return new TListSentryPrivilegesByAuthRequestTupleScheme(); - } - } - - private static class TListSentryPrivilegesByAuthRequestTupleScheme extends TupleScheme<TListSentryPrivilegesByAuthRequest> { - - @Override - public void write(org.apache.thrift.protocol.TProtocol prot, TListSentryPrivilegesByAuthRequest struct) throws org.apache.thrift.TException { - TTupleProtocol oprot = (TTupleProtocol) prot; - oprot.writeI32(struct.protocol_version); - oprot.writeString(struct.requestorUserName); - { - oprot.writeI32(struct.authorizableSet.size()); - for (TSentryAuthorizable _iter90 : struct.authorizableSet) - { - _iter90.write(oprot); - } - } - BitSet optionals = new BitSet(); - if (struct.isSetGroups()) { - optionals.set(0); - } - if (struct.isSetRoleSet()) { - optionals.set(1); - } - oprot.writeBitSet(optionals, 2); - if (struct.isSetGroups()) { - { - oprot.writeI32(struct.groups.size()); - for (String _iter91 : struct.groups) - { - oprot.writeString(_iter91); - } - } - } - if (struct.isSetRoleSet()) { - struct.roleSet.write(oprot); - } - } - - @Override - public void read(org.apache.thrift.protocol.TProtocol prot, TListSentryPrivilegesByAuthRequest struct) throws org.apache.thrift.TException { - TTupleProtocol iprot = (TTupleProtocol) prot; - struct.protocol_version = iprot.readI32(); - struct.setProtocol_versionIsSet(true); - struct.requestorUserName = iprot.readString(); - struct.setRequestorUserNameIsSet(true); - { - org.apache.thrift.protocol.TSet _set92 = new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32()); - struct.authorizableSet = new HashSet<TSentryAuthorizable>(2*_set92.size); - for (int _i93 = 0; _i93 < _set92.size; ++_i93) - { - TSentryAuthorizable _elem94; // required - _elem94 = new TSentryAuthorizable(); - _elem94.read(iprot); - struct.authorizableSet.add(_elem94); - } - } - struct.setAuthorizableSetIsSet(true); - BitSet incoming = iprot.readBitSet(2); - if (incoming.get(0)) { - { - org.apache.thrift.protocol.TSet _set95 = new org.apache.thrift.protocol.TSet(org.apache.thrift.protocol.TType.STRING, iprot.readI32()); - struct.groups = new HashSet<String>(2*_set95.size); - for (int _i96 = 0; _i96 < _set95.size; ++_i96) - { - String _elem97; // required - _elem97 = iprot.readString(); - struct.groups.add(_elem97); - } - } - struct.setGroupsIsSet(true); - } - if (incoming.get(1)) { - struct.roleSet = new TSentryActiveRoleSet(); - struct.roleSet.read(iprot); - struct.setRoleSetIsSet(true); - } - } - } - -} -