org.apache.guacamole.net.auth.credentials.UserCredentials Maven / Gradle / Ivy
/*
* 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.guacamole.net.auth.credentials;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.apache.guacamole.form.Field;
/**
* A fully-valid set of credentials and associated values. Each instance of
* this object should describe a full set of parameter name/value pairs which
* can be used to authenticate successfully, even if that success depends on
* factors not described by this object.
*/
public class UserCredentials extends CredentialsInfo {
/**
* All fields required for valid credentials.
*/
private Map values;
/**
* Creates a new UserCredentials object which requires the given fields and
* values.
*
* @param fields
* The fields to require.
*
* @param values
* The values required for each field, as a map of field name to
* correct value.
*/
public UserCredentials(Collection fields, Map values) {
super(fields);
this.values = values;
}
/**
* Creates a new UserCredentials object which requires fields described by
* the given CredentialsInfo. The value required for each field in the
* CredentialsInfo is defined in the given Map.
*
* @param info
* The CredentialsInfo object describing the fields to require.
*
* @param values
* The values required for each field, as a map of field name to
* correct value.
*/
public UserCredentials(CredentialsInfo info, Map values) {
this(info.getFields(), values);
}
/**
* Creates a new UserCredentials object which requires fields described by
* the given CredentialsInfo but does not yet have any defined values.
*
* @param info
* The CredentialsInfo object describing the fields to require.
*/
public UserCredentials(CredentialsInfo info) {
this(info, new HashMap());
}
/**
* Creates a new UserCredentials object which requires the given fields but
* does not yet have any defined values.
*
* @param fields
* The fields to require.
*/
public UserCredentials(Collection fields) {
this(fields, new HashMap());
}
/**
* Returns a map of field names to values which backs this UserCredentials
* object. Modifications to the returned map will directly affect the
* associated name/value pairs.
*
* @return
* A map of field names to their corresponding values which backs this
* UserCredentials object.
*/
public Map getValues() {
return values;
}
/**
* Replaces the map backing this UserCredentials object with the given map.
* All field name/value pairs described by the original map are replaced by
* the name/value pairs in the given map.
*
* @param values
* The map of field names to their corresponding values which should be
* used to back this UserCredentials object.
*/
public void setValues(Map values) {
this.values = values;
}
/**
* Returns the value defined by this UserCrendentials object for the field
* having the given name.
*
* @param name
* The name of the field whose value should be returned.
*
* @return
* The value of the field having the given name, or null if no value is
* defined for that field.
*/
public String getValue(String name) {
return values.get(name);
}
/**
* Returns the value defined by this UserCrendentials object for the given
* field.
*
* @param field
* The field whose value should be returned.
*
* @return
* The value of the given field, or null if no value is defined for
* that field.
*/
public String getValue(Field field) {
return getValue(field.getName());
}
/**
* Sets the value of the field having the given name. Any existing value
* for that field is replaced.
*
* @param name
* The name of the field whose value should be assigned.
*
* @param value
* The value to assign to the field having the given name.
*
* @return
* The previous value of the field, or null if the value of the field
* was not previously defined.
*/
public String setValue(String name, String value) {
return values.put(name, value);
}
/**
* Sets the value of the given field. Any existing value for that field is
* replaced.
*
* @param field
* The field whose value should be assigned.
*
* @param value
* The value to assign to the given field.
*
* @return
* The previous value of the field, or null if the value of the field
* was not previously defined.
*/
public String setValue(Field field, String value) {
return setValue(field.getName(), value);
}
/**
* Removes (undefines) the value of the field having the given name,
* returning its previous value. If the field value was not defined, this
* function has no effect, and null is returned.
*
* @param name
* The name of the field whose value should be removed.
*
* @return
* The previous value of the field, or null if the value of the field
* was not previously defined.
*/
public String removeValue(String name) {
return values.remove(name);
}
/**
* Removes (undefines) the value of the given field returning its previous
* value. If the field value was not defined, this function has no effect,
* and null is returned.
*
* @param field
* The field whose value should be removed.
*
* @return
* The previous value of the field, or null if the value of the field
* was not previously defined.
*/
public String removeValue(Field field) {
return removeValue(field.getName());
}
}