diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index b0bcf91c5ef..86bd3f27fa0 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -651,6 +651,8 @@ Release 2.9.0 - UNRELEASED HADOOP-12625. Add a config to disable the /logs endpoints (rkanter) + HADOOP-12566. Add NullGroupMapping. (Daniel Templeton via kasha) + OPTIMIZATIONS BUG FIXES diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/NullGroupsMapping.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/NullGroupsMapping.java new file mode 100644 index 00000000000..f3d048daf99 --- /dev/null +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/NullGroupsMapping.java @@ -0,0 +1,50 @@ +/* + * Copyright 2015 Apache Software Foundation. + * + * Licensed 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.hadoop.security; + +import java.util.Collections; +import java.util.List; + +/** + * This class provides groups mapping for {@link UserGroupInformation} when the + * user group information will not be used. + */ +public class NullGroupsMapping implements GroupMappingServiceProvider { + /** + * Nothing is returned, so nothing is cached. + * @param groups ignored + */ + @Override + public void cacheGroupsAdd(List groups) { + } + + /** + * Returns an empty list. + * @param user ignored + * @return an empty list + */ + @Override + public List getGroups(String user) { + return Collections.emptyList(); + } + + /** + * Nothing is returned, so nothing is cached. + */ + @Override + public void cacheGroupsRefresh() { + } +} diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestNullGroupsMapping.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestNullGroupsMapping.java new file mode 100644 index 00000000000..4b94e51ee1d --- /dev/null +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestNullGroupsMapping.java @@ -0,0 +1,60 @@ +/* + * Copyright 2015 Apache Software Foundation. + * + * Licensed 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.hadoop.security; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import org.junit.Before; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * Test that the {@link NullGroupsMapping} really does nothing. + */ +public class TestNullGroupsMapping { + private NullGroupsMapping ngm; + + @Before + public void setUp() { + this.ngm = new NullGroupsMapping(); + } + + /** + * Test of getGroups method, of class {@link NullGroupsMapping}. + */ + @Test + public void testGetGroups() { + String user = "user"; + List expResult = Collections.emptyList(); + List result = ngm.getGroups(user); + + assertEquals("No groups should be returned", + expResult, result); + + ngm.cacheGroupsAdd(Arrays.asList(new String[] {"group1", "group2"})); + result = ngm.getGroups(user); + + assertEquals("No groups should be returned", + expResult, result); + + ngm.cacheGroupsRefresh(); + result = ngm.getGroups(user); + + assertEquals("No groups should be returned", + expResult, result); + } +}