Author: rkanter
Date: Wed Jan 16 01:53:37 2013
New Revision: 1433796

URL: http://svn.apache.org/viewvc?rev=1433796&view=rev
Log:
OOZIE-1166 Print a more helpful message when ProxyUserService is configured 
wrong (rkanter)

Modified:
    
oozie/trunk/core/src/main/java/org/apache/oozie/service/ProxyUserService.java
    oozie/trunk/core/src/main/java/org/apache/oozie/util/ParamChecker.java
    
oozie/trunk/core/src/test/java/org/apache/oozie/service/TestProxyUserService.java
    oozie/trunk/release-log.txt

Modified: 
oozie/trunk/core/src/main/java/org/apache/oozie/service/ProxyUserService.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/service/ProxyUserService.java?rev=1433796&r1=1433795&r2=1433796&view=diff
==============================================================================
--- 
oozie/trunk/core/src/main/java/org/apache/oozie/service/ProxyUserService.java 
(original)
+++ 
oozie/trunk/core/src/main/java/org/apache/oozie/service/ProxyUserService.java 
Wed Jan 16 01:53:37 2013
@@ -128,8 +128,14 @@ public class ProxyUserService implements
      */
     public void validate(String proxyUser, String proxyHost, String doAsUser) 
throws IOException,
         AccessControlException {
-        ParamChecker.notEmpty(proxyUser, "proxyUser");
-        ParamChecker.notEmpty(proxyHost, "proxyHost");
+        ParamChecker.notEmpty(proxyUser, "proxyUser",
+                "If you're attempting to use user-impersonation via a proxy 
user, please make sure that "
+                + "oozie.service.ProxyUserService.proxyuser.#USER#.hosts and "
+                + "oozie.service.ProxyUserService.proxyuser.#USER#.groups are 
configured correctly");
+        ParamChecker.notEmpty(proxyHost, "proxyHost",
+                "If you're attempting to use user-impersonation via a proxy 
user, please make sure that "
+                + "oozie.service.ProxyUserService.proxyuser." + proxyUser + 
".hosts and "
+                + "oozie.service.ProxyUserService.proxyuser." + proxyUser + 
".groups are configured correctly");
         ParamChecker.notEmpty(doAsUser, "doAsUser");
         LOG.debug("Authorization check proxyuser [{0}] host [{1}] doAs [{2}]",
                   new Object[]{proxyUser, proxyHost, doAsUser});

Modified: oozie/trunk/core/src/main/java/org/apache/oozie/util/ParamChecker.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/core/src/main/java/org/apache/oozie/util/ParamChecker.java?rev=1433796&r1=1433795&r2=1433796&view=diff
==============================================================================
--- oozie/trunk/core/src/main/java/org/apache/oozie/util/ParamChecker.java 
(original)
+++ oozie/trunk/core/src/main/java/org/apache/oozie/util/ParamChecker.java Wed 
Jan 16 01:53:37 2013
@@ -64,11 +64,23 @@ public class ParamChecker {
      * @return the given value.
      */
     public static String notEmpty(String str, String name) {
+        return notEmpty(str, name, null);
+    }
+
+    /**
+     * Check that a string is not null and not empty. If null or emtpy throws 
an IllegalArgumentException.
+     *
+     * @param str value.
+     * @param name parameter name for the exception message.
+     * @param info additional information to be printed with the exception 
message
+     * @return the given value.
+     */
+    public static String notEmpty(String str, String name, String info) {
         if (str == null) {
-            throw new IllegalArgumentException(name + " cannot be null");
+            throw new IllegalArgumentException(name + " cannot be null" + 
(info == null ? "" : ", " + info));
         }
         if (str.length() == 0) {
-            throw new IllegalArgumentException(name + " cannot be empty");
+            throw new IllegalArgumentException(name + " cannot be empty" + 
(info == null ? "" : ", " + info));
         }
         return str;
     }

Modified: 
oozie/trunk/core/src/test/java/org/apache/oozie/service/TestProxyUserService.java
URL: 
http://svn.apache.org/viewvc/oozie/trunk/core/src/test/java/org/apache/oozie/service/TestProxyUserService.java?rev=1433796&r1=1433795&r2=1433796&view=diff
==============================================================================
--- 
oozie/trunk/core/src/test/java/org/apache/oozie/service/TestProxyUserService.java
 (original)
+++ 
oozie/trunk/core/src/test/java/org/apache/oozie/service/TestProxyUserService.java
 Wed Jan 16 01:53:37 2013
@@ -270,5 +270,52 @@ public class TestProxyUserService extend
         }
     }
 
+    public void testNullProxyUser() throws Exception {
+        Services services = new Services();
+        Configuration conf = services.getConf();
+        conf.set(Services.CONF_SERVICE_CLASSES, StringUtils.join(",", 
Arrays.asList(GroupsService.class.getName(),
+                                                                               
     ProxyUserService.class.getName())));
+        services.init();
+        try {
+            ProxyUserService proxyUser = services.get(ProxyUserService.class);
+            Assert.assertNotNull(proxyUser);
+            proxyUser.validate(null, "localhost", "bar");
+            fail();
+        }
+        catch (IllegalArgumentException ex) {
+            
assertTrue(ex.getMessage().contains("oozie.service.ProxyUserService.proxyuser.#USER#.hosts"));
+            
assertTrue(ex.getMessage().contains("oozie.service.ProxyUserService.proxyuser.#USER#.groups"));
+        }
+        catch (Exception ex) {
+            fail(ex.toString());
+        }
+        finally {
+            services.destroy();
+        }
+    }
+
+    public void testNullHost() throws Exception {
+        Services services = new Services();
+        Configuration conf = services.getConf();
+        conf.set(Services.CONF_SERVICE_CLASSES, StringUtils.join(",", 
Arrays.asList(GroupsService.class.getName(),
+                                                                               
     ProxyUserService.class.getName())));
+        services.init();
+        try {
+            ProxyUserService proxyUser = services.get(ProxyUserService.class);
+            Assert.assertNotNull(proxyUser);
+            proxyUser.validate("foo", null, "bar");
+            fail();
+        }
+        catch (IllegalArgumentException ex) {
+            
assertTrue(ex.getMessage().contains("oozie.service.ProxyUserService.proxyuser.foo.hosts"));
+            
assertTrue(ex.getMessage().contains("oozie.service.ProxyUserService.proxyuser.foo.groups"));
+        }
+        catch (Exception ex) {
+            fail(ex.toString());
+        }
+        finally {
+            services.destroy();
+        }
+    }
 }
 

Modified: oozie/trunk/release-log.txt
URL: 
http://svn.apache.org/viewvc/oozie/trunk/release-log.txt?rev=1433796&r1=1433795&r2=1433796&view=diff
==============================================================================
--- oozie/trunk/release-log.txt (original)
+++ oozie/trunk/release-log.txt Wed Jan 16 01:53:37 2013
@@ -1,5 +1,6 @@
 -- Oozie 3.4.0 release (trunk - unreleased)
 
+OOZIE-1166 Print a more helpful message when ProxyUserService is configured 
wrong (rkanter)
 OOZIE-1136 Fix MiniOozie (rkanter)
 OOZIE-1051 Repeating Errors for workflows that were allreday Killed (rkanter)
 OOZIE-1140 TestLogStreamer.testStreamLog fails when its started within the 
first 4 seconds after the hour (rkanter)


Reply via email to