Author: vines Date: Thu Feb 28 21:45:34 2013 New Revision: 1451368 URL: http://svn.apache.org/r1451368 Log: ACCUMULO-1133 - moved files... right
Added: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/SecurityErrorCode.java (with props) accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ThriftSecurityException.java (with props) accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/ accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/ accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java (with props) accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java (with props) accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java (with props) accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/SystemToken.java (with props) Removed: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/security/thrift/SecurityErrorCode.java accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/security/thrift/ThriftSecurityException.java accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/security/tokens/ Added: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/SecurityErrorCode.java URL: http://svn.apache.org/viewvc/accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/SecurityErrorCode.java?rev=1451368&view=auto ============================================================================== --- accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/SecurityErrorCode.java (added) +++ accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/SecurityErrorCode.java Thu Feb 28 21:45:34 2013 @@ -0,0 +1,109 @@ +/* + * 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. + */ +/** + * 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.accumulo.core.client.impl.thrift; + + +import java.util.Map; +import java.util.HashMap; +import org.apache.thrift.TEnum; + +@SuppressWarnings("all") public enum SecurityErrorCode implements org.apache.thrift.TEnum { + DEFAULT_SECURITY_ERROR(0), + BAD_CREDENTIALS(1), + PERMISSION_DENIED(2), + USER_DOESNT_EXIST(3), + CONNECTION_ERROR(4), + USER_EXISTS(5), + GRANT_INVALID(6), + BAD_AUTHORIZATIONS(7), + INVALID_INSTANCEID(8), + TABLE_DOESNT_EXIST(9), + UNSUPPORTED_OPERATION(10), + INVALID_TOKEN(11), + AUTHENTICATOR_FAILED(12), + AUTHORIZOR_FAILED(13), + PERMISSIONHANDLER_FAILED(14), + TOKEN_EXPIRED(15), + SERIALIZATION_ERROR(16), + INSUFFICIENT_PROPERTIES(17); + + private final int value; + + private SecurityErrorCode(int value) { + this.value = value; + } + + /** + * Get the integer value of this enum value, as defined in the Thrift IDL. + */ + public int getValue() { + return value; + } + + /** + * Find a the enum type by its integer value, as defined in the Thrift IDL. + * @return null if the value is not found. + */ + public static SecurityErrorCode findByValue(int value) { + switch (value) { + case 0: + return DEFAULT_SECURITY_ERROR; + case 1: + return BAD_CREDENTIALS; + case 2: + return PERMISSION_DENIED; + case 3: + return USER_DOESNT_EXIST; + case 4: + return CONNECTION_ERROR; + case 5: + return USER_EXISTS; + case 6: + return GRANT_INVALID; + case 7: + return BAD_AUTHORIZATIONS; + case 8: + return INVALID_INSTANCEID; + case 9: + return TABLE_DOESNT_EXIST; + case 10: + return UNSUPPORTED_OPERATION; + case 11: + return INVALID_TOKEN; + case 12: + return AUTHENTICATOR_FAILED; + case 13: + return AUTHORIZOR_FAILED; + case 14: + return PERMISSIONHANDLER_FAILED; + case 15: + return TOKEN_EXPIRED; + case 16: + return SERIALIZATION_ERROR; + case 17: + return INSUFFICIENT_PROPERTIES; + default: + return null; + } + } +} Propchange: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/SecurityErrorCode.java ------------------------------------------------------------------------------ svn:eol-style = native Added: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ThriftSecurityException.java URL: http://svn.apache.org/viewvc/accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ThriftSecurityException.java?rev=1451368&view=auto ============================================================================== --- accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ThriftSecurityException.java (added) +++ accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ThriftSecurityException.java Thu Feb 28 21:45:34 2013 @@ -0,0 +1,518 @@ +/* + * 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. + */ +/** + * 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.accumulo.core.client.impl.thrift; + +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; + +@SuppressWarnings("all") public class ThriftSecurityException extends TException implements org.apache.thrift.TBase<ThriftSecurityException, ThriftSecurityException._Fields>, java.io.Serializable, Cloneable { + private static final org.apache.thrift.protocol.TStruct STRUCT_DESC = new org.apache.thrift.protocol.TStruct("ThriftSecurityException"); + + private static final org.apache.thrift.protocol.TField USER_FIELD_DESC = new org.apache.thrift.protocol.TField("user", org.apache.thrift.protocol.TType.STRING, (short)1); + private static final org.apache.thrift.protocol.TField CODE_FIELD_DESC = new org.apache.thrift.protocol.TField("code", org.apache.thrift.protocol.TType.I32, (short)2); + + private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>(); + static { + schemes.put(StandardScheme.class, new ThriftSecurityExceptionStandardSchemeFactory()); + schemes.put(TupleScheme.class, new ThriftSecurityExceptionTupleSchemeFactory()); + } + + public String user; // required + /** + * + * @see SecurityErrorCode + */ + public SecurityErrorCode code; // required + + /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ + @SuppressWarnings("all") public enum _Fields implements org.apache.thrift.TFieldIdEnum { + USER((short)1, "user"), + /** + * + * @see SecurityErrorCode + */ + CODE((short)2, "code"); + + 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: // USER + return USER; + case 2: // CODE + return CODE; + 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 + 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.USER, new org.apache.thrift.meta_data.FieldMetaData("user", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING))); + tmpMap.put(_Fields.CODE, new org.apache.thrift.meta_data.FieldMetaData("code", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, SecurityErrorCode.class))); + metaDataMap = Collections.unmodifiableMap(tmpMap); + org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(ThriftSecurityException.class, metaDataMap); + } + + public ThriftSecurityException() { + } + + public ThriftSecurityException( + String user, + SecurityErrorCode code) + { + this(); + this.user = user; + this.code = code; + } + + /** + * Performs a deep copy on <i>other</i>. + */ + public ThriftSecurityException(ThriftSecurityException other) { + if (other.isSetUser()) { + this.user = other.user; + } + if (other.isSetCode()) { + this.code = other.code; + } + } + + public ThriftSecurityException deepCopy() { + return new ThriftSecurityException(this); + } + + @Override + public void clear() { + this.user = null; + this.code = null; + } + + public String getUser() { + return this.user; + } + + public ThriftSecurityException setUser(String user) { + this.user = user; + return this; + } + + public void unsetUser() { + this.user = null; + } + + /** Returns true if field user is set (has been assigned a value) and false otherwise */ + public boolean isSetUser() { + return this.user != null; + } + + public void setUserIsSet(boolean value) { + if (!value) { + this.user = null; + } + } + + /** + * + * @see SecurityErrorCode + */ + public SecurityErrorCode getCode() { + return this.code; + } + + /** + * + * @see SecurityErrorCode + */ + public ThriftSecurityException setCode(SecurityErrorCode code) { + this.code = code; + return this; + } + + public void unsetCode() { + this.code = null; + } + + /** Returns true if field code is set (has been assigned a value) and false otherwise */ + public boolean isSetCode() { + return this.code != null; + } + + public void setCodeIsSet(boolean value) { + if (!value) { + this.code = null; + } + } + + public void setFieldValue(_Fields field, Object value) { + switch (field) { + case USER: + if (value == null) { + unsetUser(); + } else { + setUser((String)value); + } + break; + + case CODE: + if (value == null) { + unsetCode(); + } else { + setCode((SecurityErrorCode)value); + } + break; + + } + } + + public Object getFieldValue(_Fields field) { + switch (field) { + case USER: + return getUser(); + + case CODE: + return getCode(); + + } + 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 USER: + return isSetUser(); + case CODE: + return isSetCode(); + } + throw new IllegalStateException(); + } + + @Override + public boolean equals(Object that) { + if (that == null) + return false; + if (that instanceof ThriftSecurityException) + return this.equals((ThriftSecurityException)that); + return false; + } + + public boolean equals(ThriftSecurityException that) { + if (that == null) + return false; + + boolean this_present_user = true && this.isSetUser(); + boolean that_present_user = true && that.isSetUser(); + if (this_present_user || that_present_user) { + if (!(this_present_user && that_present_user)) + return false; + if (!this.user.equals(that.user)) + return false; + } + + boolean this_present_code = true && this.isSetCode(); + boolean that_present_code = true && that.isSetCode(); + if (this_present_code || that_present_code) { + if (!(this_present_code && that_present_code)) + return false; + if (!this.code.equals(that.code)) + return false; + } + + return true; + } + + @Override + public int hashCode() { + return 0; + } + + public int compareTo(ThriftSecurityException other) { + if (!getClass().equals(other.getClass())) { + return getClass().getName().compareTo(other.getClass().getName()); + } + + int lastComparison = 0; + ThriftSecurityException typedOther = (ThriftSecurityException)other; + + lastComparison = Boolean.valueOf(isSetUser()).compareTo(typedOther.isSetUser()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetUser()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.user, typedOther.user); + if (lastComparison != 0) { + return lastComparison; + } + } + lastComparison = Boolean.valueOf(isSetCode()).compareTo(typedOther.isSetCode()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetCode()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.code, typedOther.code); + 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("ThriftSecurityException("); + boolean first = true; + + sb.append("user:"); + if (this.user == null) { + sb.append("null"); + } else { + sb.append(this.user); + } + first = false; + if (!first) sb.append(", "); + sb.append("code:"); + if (this.code == null) { + sb.append("null"); + } else { + sb.append(this.code); + } + first = false; + sb.append(")"); + return sb.toString(); + } + + public void validate() throws org.apache.thrift.TException { + // check for required fields + // check for sub-struct validity + } + + 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 { + 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 ThriftSecurityExceptionStandardSchemeFactory implements SchemeFactory { + public ThriftSecurityExceptionStandardScheme getScheme() { + return new ThriftSecurityExceptionStandardScheme(); + } + } + + private static class ThriftSecurityExceptionStandardScheme extends StandardScheme<ThriftSecurityException> { + + public void read(org.apache.thrift.protocol.TProtocol iprot, ThriftSecurityException 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: // USER + if (schemeField.type == org.apache.thrift.protocol.TType.STRING) { + struct.user = iprot.readString(); + struct.setUserIsSet(true); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type); + } + break; + case 2: // CODE + if (schemeField.type == org.apache.thrift.protocol.TType.I32) { + struct.code = SecurityErrorCode.findByValue(iprot.readI32()); + struct.setCodeIsSet(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(); + + // check for required fields of primitive type, which can't be checked in the validate method + struct.validate(); + } + + public void write(org.apache.thrift.protocol.TProtocol oprot, ThriftSecurityException struct) throws org.apache.thrift.TException { + struct.validate(); + + oprot.writeStructBegin(STRUCT_DESC); + if (struct.user != null) { + oprot.writeFieldBegin(USER_FIELD_DESC); + oprot.writeString(struct.user); + oprot.writeFieldEnd(); + } + if (struct.code != null) { + oprot.writeFieldBegin(CODE_FIELD_DESC); + oprot.writeI32(struct.code.getValue()); + oprot.writeFieldEnd(); + } + oprot.writeFieldStop(); + oprot.writeStructEnd(); + } + + } + + private static class ThriftSecurityExceptionTupleSchemeFactory implements SchemeFactory { + public ThriftSecurityExceptionTupleScheme getScheme() { + return new ThriftSecurityExceptionTupleScheme(); + } + } + + private static class ThriftSecurityExceptionTupleScheme extends TupleScheme<ThriftSecurityException> { + + @Override + public void write(org.apache.thrift.protocol.TProtocol prot, ThriftSecurityException struct) throws org.apache.thrift.TException { + TTupleProtocol oprot = (TTupleProtocol) prot; + BitSet optionals = new BitSet(); + if (struct.isSetUser()) { + optionals.set(0); + } + if (struct.isSetCode()) { + optionals.set(1); + } + oprot.writeBitSet(optionals, 2); + if (struct.isSetUser()) { + oprot.writeString(struct.user); + } + if (struct.isSetCode()) { + oprot.writeI32(struct.code.getValue()); + } + } + + @Override + public void read(org.apache.thrift.protocol.TProtocol prot, ThriftSecurityException struct) throws org.apache.thrift.TException { + TTupleProtocol iprot = (TTupleProtocol) prot; + BitSet incoming = iprot.readBitSet(2); + if (incoming.get(0)) { + struct.user = iprot.readString(); + struct.setUserIsSet(true); + } + if (incoming.get(1)) { + struct.code = SecurityErrorCode.findByValue(iprot.readI32()); + struct.setCodeIsSet(true); + } + } + } + +} + Propchange: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/impl/thrift/ThriftSecurityException.java ------------------------------------------------------------------------------ svn:eol-style = native Added: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java URL: http://svn.apache.org/viewvc/accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java?rev=1451368&view=auto ============================================================================== --- accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java (added) +++ accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java Thu Feb 28 21:45:34 2013 @@ -0,0 +1,25 @@ +/* + * 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.accumulo.core.client.security.tokens; + +import javax.security.auth.Destroyable; + +import org.apache.hadoop.io.Writable; + +public interface AuthenticationToken extends Writable, Destroyable, Cloneable { + public AuthenticationToken clone(); +} Propchange: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/AuthenticationToken.java ------------------------------------------------------------------------------ svn:eol-style = native Added: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java URL: http://svn.apache.org/viewvc/accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java?rev=1451368&view=auto ============================================================================== --- accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java (added) +++ accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java Thu Feb 28 21:45:34 2013 @@ -0,0 +1,53 @@ +/* + * 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.accumulo.core.client.security.tokens; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +import javax.security.auth.DestroyFailedException; + +/** + * + */ +public class NullToken implements AuthenticationToken { + + @Override + public void readFields(DataInput arg0) throws IOException { + return; + } + + @Override + public void write(DataOutput arg0) throws IOException { + return; + } + + @Override + public void destroy() throws DestroyFailedException { + return; + } + + @Override + public boolean isDestroyed() { + return false; + } + + public NullToken clone() { + return new NullToken(); + } +} Propchange: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/NullToken.java ------------------------------------------------------------------------------ svn:eol-style = native Added: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java URL: http://svn.apache.org/viewvc/accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java?rev=1451368&view=auto ============================================================================== --- accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java (added) +++ accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java Thu Feb 28 21:45:34 2013 @@ -0,0 +1,112 @@ +/* + * 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.accumulo.core.client.security.tokens; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Arrays; + +import javax.security.auth.DestroyFailedException; + +import org.apache.accumulo.core.Constants; +import org.apache.accumulo.core.util.ByteBufferUtil; +import org.apache.hadoop.io.Writable; +import org.apache.hadoop.io.WritableUtils; + +public class PasswordToken implements AuthenticationToken { + private byte[] password = null; + + public byte[] getPassword() { + return password; + } + + /** + * Constructor for use with {@link Writable}. Call {@link #readFields(DataInput)}. + */ + public PasswordToken() {} + + /** + * Constructs a token from a copy of the password. Destroying the argument after construction will not destroy the copy in this token, and destroying this + * token will only destroy the copy held inside this token, not the argument. + * + * Password tokens created with this constructor will store the password as UTF-8 bytes. + */ + public PasswordToken(CharSequence password) { + this.password = password.toString().getBytes(Constants.UTF8); + } + + /** + * Constructs a token from a copy of the password. Destroying the argument after construction will not destroy the copy in this token, and destroying this + * token will only destroy the copy held inside this token, not the argument. + */ + public PasswordToken(byte[] password) { + this.password = Arrays.copyOf(password, password.length); + } + + /** + * Constructs a token from a copy of the password. Destroying the argument after construction will not destroy the copy in this token, and destroying this + * token will only destroy the copy held inside this token, not the argument. + */ + public PasswordToken(ByteBuffer password) { + this.password = ByteBufferUtil.toBytes(password); + } + + @Override + public void readFields(DataInput arg0) throws IOException { + password = WritableUtils.readCompressedByteArray(arg0); + } + + @Override + public void write(DataOutput arg0) throws IOException { + WritableUtils.writeCompressedByteArray(arg0, password); + } + + @Override + public void destroy() throws DestroyFailedException { + Arrays.fill(password, (byte) 0x00); + password = null; + } + + @Override + public boolean isDestroyed() { + return password == null; + } + + @Override + public int hashCode() { + return Arrays.hashCode(password); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (!(obj instanceof PasswordToken)) + return false; + PasswordToken other = (PasswordToken) obj; + return Arrays.equals(password, other.password); + } + + @Override + public PasswordToken clone() { + return new PasswordToken(password); + } +} Propchange: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/PasswordToken.java ------------------------------------------------------------------------------ svn:eol-style = native Added: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/SystemToken.java URL: http://svn.apache.org/viewvc/accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/SystemToken.java?rev=1451368&view=auto ============================================================================== --- accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/SystemToken.java (added) +++ accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/SystemToken.java Thu Feb 28 21:45:34 2013 @@ -0,0 +1,27 @@ +/* + * 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.accumulo.core.client.security.tokens; + +/** + * + */ +public class SystemToken extends PasswordToken { + + public SystemToken(byte[] systemPassword) { + super(systemPassword); + } +} Propchange: accumulo/branches/ACCUMULO-259-polishing/core/src/main/java/org/apache/accumulo/core/client/security/tokens/SystemToken.java ------------------------------------------------------------------------------ svn:eol-style = native