Author: eevans
Date: Sat Apr  3 21:54:16 2010
New Revision: 930584

URL: http://svn.apache.org/viewvc?rev=930584&view=rev
Log:
better error handling for authenticators

Patch by Roger Schildmeijer; reviewed by eevans for CASSANDRA-935

Modified:
    
cassandra/trunk/src/java/org/apache/cassandra/auth/AllowAllAuthenticator.java
    cassandra/trunk/src/java/org/apache/cassandra/auth/IAuthenticator.java
    cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java
    cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/auth/AllowAllAuthenticator.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/auth/AllowAllAuthenticator.java?rev=930584&r1=930583&r2=930584&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/auth/AllowAllAuthenticator.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/auth/AllowAllAuthenticator.java 
Sat Apr  3 21:54:16 2010
@@ -21,6 +21,7 @@ package org.apache.cassandra.auth;
  */
 
 
+import org.apache.cassandra.config.DatabaseDescriptor.ConfigurationException;
 import org.apache.cassandra.thrift.AccessLevel;
 import org.apache.cassandra.thrift.AuthenticationException;
 import org.apache.cassandra.thrift.AuthenticationRequest;
@@ -34,4 +35,9 @@ public class AllowAllAuthenticator imple
         // do nothing, allow anything
         return AccessLevel.FULL;
     }
+    
+   @Override    
+    public void validateConfiguration() throws ConfigurationException {
+        // do nothing, no configuration to validate
+    }
 }

Modified: cassandra/trunk/src/java/org/apache/cassandra/auth/IAuthenticator.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/auth/IAuthenticator.java?rev=930584&r1=930583&r2=930584&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/auth/IAuthenticator.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/auth/IAuthenticator.java Sat 
Apr  3 21:54:16 2010
@@ -21,6 +21,7 @@ package org.apache.cassandra.auth;
  */
 
 
+import org.apache.cassandra.config.DatabaseDescriptor.ConfigurationException;
 import org.apache.cassandra.thrift.AccessLevel;
 import org.apache.cassandra.thrift.AuthenticationException;
 import org.apache.cassandra.thrift.AuthenticationRequest;
@@ -29,4 +30,6 @@ import org.apache.cassandra.thrift.Autho
 public interface IAuthenticator
 {
     public AccessLevel login(String keyspace, AuthenticationRequest 
auth_request) throws AuthenticationException, AuthorizationException;
+
+    public void validateConfiguration() throws ConfigurationException;
 }

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java?rev=930584&r1=930583&r2=930584&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java 
(original)
+++ cassandra/trunk/src/java/org/apache/cassandra/auth/SimpleAuthenticator.java 
Sat Apr  3 21:54:16 2010
@@ -26,6 +26,7 @@ import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Properties;
 
+import org.apache.cassandra.config.DatabaseDescriptor.ConfigurationException;
 import org.apache.cassandra.thrift.AccessLevel;
 import org.apache.cassandra.thrift.AuthenticationException;
 import org.apache.cassandra.thrift.AuthenticationRequest;
@@ -155,6 +156,19 @@ public class SimpleAuthenticator impleme
         return authorized;
     }
 
+   @Override
+    public void validateConfiguration() throws ConfigurationException 
+    {
+        String aFileName = 
System.getProperty(SimpleAuthenticator.ACCESS_FILENAME_PROPERTY);
+        String pfilename = 
System.getProperty(SimpleAuthenticator.PASSWD_FILENAME_PROPERTY);
+        if (aFileName == null || pfilename == null)
+        {
+            throw new ConfigurationException("When using " + 
this.getClass().getCanonicalName() + " " + 
+                    SimpleAuthenticator.ACCESS_FILENAME_PROPERTY + " and " + 
+                    SimpleAuthenticator.PASSWD_FILENAME_PROPERTY + " 
properties must be defined.");    
+        }
+    }
+
     static String authorizationErrorMessage(String keyspace, String username)
     {
         return String.format("User %s could not be authorized to use keyspace 
%s", username, keyspace);

Modified: 
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
URL: 
http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java?rev=930584&r1=930583&r2=930584&view=diff
==============================================================================
--- 
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java 
(original)
+++ 
cassandra/trunk/src/java/org/apache/cassandra/config/DatabaseDescriptor.java 
Sat Apr  3 21:54:16 2010
@@ -249,6 +249,8 @@ public class DatabaseDescriptor
                     throw new ConfigurationException("Invalid authenticator 
class " + authenticatorClassName);
                 }
             }
+
+            authenticator.validateConfiguration();
             
             /* Hashing strategy */
             String partitionerClassName = 
xmlUtils.getNodeValue("/Storage/Partitioner");


Reply via email to