You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by vi...@apache.org on 2013/04/19 02:58:16 UTC
svn commit: r1469651 - in /accumulo/trunk: ./ core/
core/src/main/java/org/apache/accumulo/core/cli/
core/src/main/java/org/apache/accumulo/core/client/security/tokens/
core/src/main/java/org/apache/accumulo/core/util/shell/
core/src/test/java/org/apac...
Author: vines
Date: Fri Apr 19 00:58:15 2013
New Revision: 1469651
URL: http://svn.apache.org/r1469651
Log:
ACCUMULO-1314 - destroyable properties. Also, fixed the tests broken with the fix for ACCUMULO-1323
Modified:
accumulo/trunk/ (props changed)
accumulo/trunk/core/ (props changed)
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/cli/ClientOpts.java
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java
accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java
accumulo/trunk/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java
accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
accumulo/trunk/server/ (props changed)
accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/trace/Basic.java
accumulo/trunk/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java
accumulo/trunk/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java
Propchange: accumulo/trunk/
------------------------------------------------------------------------------
Merged /accumulo/branches/1.5:r1469628,1469630-1469631,1469633-1469650
Propchange: accumulo/trunk/core/
------------------------------------------------------------------------------
Merged /accumulo/branches/1.5/core:r1469531-1469628,1469630-1469631,1469633-1469650
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/cli/ClientOpts.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/cli/ClientOpts.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/cli/ClientOpts.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/cli/ClientOpts.java Fri Apr 19 00:58:15 2013
@@ -21,7 +21,6 @@ import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Properties;
import java.util.TreeMap;
import java.util.UUID;
@@ -36,6 +35,7 @@ import org.apache.accumulo.core.client.m
import org.apache.accumulo.core.client.mapreduce.AccumuloOutputFormat;
import org.apache.accumulo.core.client.mock.MockInstance;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.Properties;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.DefaultConfiguration;
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java Fri Apr 19 00:58:15 2013
@@ -16,9 +16,12 @@
*/
package org.apache.accumulo.core.client.security.tokens;
-import java.util.Properties;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Set;
+import javax.security.auth.DestroyFailedException;
import javax.security.auth.Destroyable;
import org.apache.hadoop.io.Writable;
@@ -27,6 +30,38 @@ import org.apache.hadoop.io.Writable;
* @since 1.5.0
*/
public interface AuthenticationToken extends Writable, Destroyable, Cloneable {
+ public class Properties extends HashMap<String, char[]> implements Destroyable {
+ private static final long serialVersionUID = 507486847276806489L;
+ boolean destroyed = false;
+
+ public char[] put(String key, CharSequence value) {
+ char[] toPut = new char[value.length()];
+ for (int i = 0; i < value.length(); i++)
+ toPut[i] = value.charAt(i);
+ return this.put(key, toPut);
+ }
+
+ public void putAllStrings(Map<String, ? extends CharSequence> map) {
+ for (Map.Entry<String,? extends CharSequence> entry : map.entrySet()) {
+ put(entry.getKey(), entry.getValue());
+ }
+ }
+
+ @Override
+ public void destroy() throws DestroyFailedException {
+ for (String key : this.keySet()) {
+ char[] val = this.get(key);
+ Arrays.fill(val, (char) 0);
+ }
+ this.clear();
+ destroyed = true;
+ }
+
+ @Override
+ public boolean isDestroyed() {
+ return destroyed;
+ }
+ }
public static class TokenProperty implements Comparable<TokenProperty> {
private String key, description;
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java Fri Apr 19 00:58:15 2013
@@ -20,7 +20,6 @@ import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.util.Collections;
-import java.util.Properties;
import java.util.Set;
import javax.security.auth.DestroyFailedException;
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java Fri Apr 19 00:58:15 2013
@@ -20,9 +20,9 @@ import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
import java.util.Arrays;
import java.util.LinkedHashSet;
-import java.util.Properties;
import java.util.Set;
import javax.security.auth.DestroyFailedException;
@@ -125,9 +125,11 @@ public class PasswordToken implements Au
@Override
public void init(Properties properties) {
- if (properties.containsKey("password"))
- this.password = properties.getProperty("password").getBytes(Constants.UTF8);
- else
+ if (properties.containsKey("password")){
+ // encode() kicks back a C-string, which is not compatible with the old passwording system
+ this.password = new byte[properties.get("password").length];
+ Constants.UTF8.encode(CharBuffer.wrap(properties.get("password"))).get(this.password, 0, this.password.length);
+ }else
throw new IllegalArgumentException("Missing 'password' property");
}
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java (original)
+++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java Fri Apr 19 00:58:15 2013
@@ -30,7 +30,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Properties;
import java.util.Set;
import java.util.TreeMap;
import java.util.UUID;
@@ -48,6 +47,7 @@ import org.apache.accumulo.core.client.T
import org.apache.accumulo.core.client.ZooKeeperInstance;
import org.apache.accumulo.core.client.mock.MockInstance;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.Properties;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.Property;
Modified: accumulo/trunk/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java (original)
+++ accumulo/trunk/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java Fri Apr 19 00:58:15 2013
@@ -87,7 +87,7 @@ public class ShellTest {
output = new TestOutputStream();
shell = new Shell(new ConsoleReader(new FileInputStream(FileDescriptor.in), new OutputStreamWriter(output)));
shell.setLogErrorsToConsole();
- shell.config("--fake", "-p", "");
+ shell.config("--fake", "-u", "test", "-p", "secret");
}
void assertGoodExit(String s, boolean stringPresent) {
@@ -154,10 +154,10 @@ public class ShellTest {
exec("setauths x,y,z", false, "Missing required option");
exec("setauths -s x,y,z -u notauser", false, "user does not exist");
exec("setauths -s y,z,x", true);
- exec("getauths -u notauser", false,"user does not exist");
- exec("getauths", true,"x,y,z");
- exec("addauths -u notauser", false,"Missing required option");
- exec("addauths -u notauser -s foo", false,"user does not exist");
+ exec("getauths -u notauser", false, "user does not exist");
+ exec("getauths", true, "y,z,x");
+ exec("addauths -u notauser", false, "Missing required option");
+ exec("addauths -u notauser -s foo", false, "user does not exist");
exec("addauths -s a", true);
exec("getauths", true, "a,x,y,z");
exec("setauths -c", true);
@@ -166,7 +166,8 @@ public class ShellTest {
@Test
public void userTest() throws Exception {
Shell.log.debug("Starting user test --------------------------");
- //exec("createuser root", false, "user exists");
+ // Test cannot be done via junit because createuser only prompts for password
+ // exec("createuser root", false, "user exists");
}
@Test
@@ -176,7 +177,7 @@ public class ShellTest {
exec("du", true, "0 [t]");
exec("deletetable t -f", true, "Table: [t] has been deleted");
}
-
+
@Test
public void duTest() throws IOException {
Shell.log.debug("Starting DU test --------------------------");
Modified: accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java (original)
+++ accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/ProxyServer.java Fri Apr 19 00:58:15 2013
@@ -1247,8 +1247,8 @@ public class ProxyServer implements Accu
}
private AuthenticationToken getToken(String principal, Map<String,String> properties) throws AccumuloSecurityException, AccumuloException {
- Properties props = new Properties();
- props.putAll(properties);
+ AuthenticationToken.Properties props = new AuthenticationToken.Properties();
+ props.putAllStrings(properties);
AuthenticationToken token;
try {
token = tokenClass.newInstance();
Propchange: accumulo/trunk/server/
------------------------------------------------------------------------------
Merged /accumulo/branches/1.5/server:r1469531-1469628,1469630-1469631,1469633-1469650
Modified: accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/trace/Basic.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/trace/Basic.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/trace/Basic.java (original)
+++ accumulo/trunk/server/src/main/java/org/apache/accumulo/server/monitor/servlets/trace/Basic.java Fri Apr 19 00:58:15 2013
@@ -19,7 +19,6 @@ package org.apache.accumulo.server.monit
import java.util.Date;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
@@ -29,6 +28,7 @@ import org.apache.accumulo.core.client.C
import org.apache.accumulo.core.client.Scanner;
import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.Properties;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.Property;
Modified: accumulo/trunk/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java (original)
+++ accumulo/trunk/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java Fri Apr 19 00:58:15 2013
@@ -21,7 +21,6 @@ import java.net.ServerSocket;
import java.nio.channels.ServerSocketChannel;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Properties;
import java.util.concurrent.TimeUnit;
import org.apache.accumulo.core.Constants;
@@ -31,6 +30,7 @@ import org.apache.accumulo.core.client.C
import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.MutationsRejectedException;
import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
+import org.apache.accumulo.core.client.security.tokens.AuthenticationToken.Properties;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.Property;
Modified: accumulo/trunk/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java?rev=1469651&r1=1469650&r2=1469651&view=diff
==============================================================================
--- accumulo/trunk/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java (original)
+++ accumulo/trunk/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java Fri Apr 19 00:58:15 2013
@@ -707,7 +707,6 @@ public class ShellServerTest {
exec("deletetable -f t");
exec("sleep 1");
String trace = exec("trace off");
- //System.out.println("trace: " + trace);
assertTrue(trace.contains("binMutations"));
assertTrue(trace.contains("update"));
assertTrue(trace.contains("DeleteTable"));