sahara-extra/hadoop-swiftfs/src/main/java/org/apache/hadoop/fs/swift/auth/PasswordAuthenticationReque...

168 lines
4.4 KiB
Java

/*
* 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.hadoop.fs.swift.auth;
import java.util.HashMap;
import java.util.Map;
import org.codehaus.jackson.annotate.JsonProperty;
import org.codehaus.jackson.annotate.JsonWriteNullProperties;
/**
* Class that represents authentication request to Openstack Keystone v3.
* Contains basic authentication information.
* THIS FILE IS MAPPED BY JACKSON TO AND FROM JSON.
* DO NOT RENAME OR MODIFY FIELDS AND THEIR ACCESSORS.
*/
@JsonWriteNullProperties(false)
public class PasswordAuthenticationRequestV3 extends AuthenticationRequestV3 {
/**
* Credentials for login
*/
private final IdentityWrapper identity;
private final ScopeWrapper scope;
public PasswordAuthenticationRequestV3(ScopeWrapper scope,
PasswordCredentialsV3 passwordCreds) {
this.identity = new IdentityWrapper(new PasswordWrapper(passwordCreds));
this.scope = scope;
}
public PasswordAuthenticationRequestV3(String projectName,
PasswordCredentialsV3 passwordCreds) {
this(projectName == null ? null :
new ScopeWrapper(new ProjectWrapper(projectName, passwordCreds.domain)),
passwordCreds);
}
public IdentityWrapper getIdentity() {
return identity;
}
public ScopeWrapper getScope() {
return scope;
}
@Override
public String toString() {
return "Authenticate(v3) as " + identity.getPassword().getUser();
}
public static class IdentityWrapper {
private final PasswordWrapper password;
private final String[] methods;
public IdentityWrapper(PasswordWrapper password) {
this.password = password;
this.methods = new String[]{"password"};
}
public PasswordWrapper getPassword() {
return password;
}
public String[] getMethods() {
return methods;
}
}
/**
* THIS CLASS IS MAPPED BY JACKSON TO AND FROM JSON.
* DO NOT RENAME OR MODIFY FIELDS AND THEIR ACCESSORS.
*/
public static class PasswordWrapper {
private final PasswordCredentialsV3 user;
public PasswordWrapper(PasswordCredentialsV3 user) {
this.user = user;
}
public PasswordCredentialsV3 getUser() {
return user;
}
}
/**
* THIS CLASS IS MAPPED BY JACKSON TO AND FROM JSON.
* DO NOT RENAME OR MODIFY FIELDS AND THEIR ACCESSORS.
*/
@JsonWriteNullProperties(false)
public static class ScopeWrapper {
private final ProjectWrapper project;
private final TrustWrapper trust;
public ScopeWrapper(ProjectWrapper project) {
this.project = project;
this.trust = null;
}
public ScopeWrapper(TrustWrapper trust) {
this.project = null;
this.trust = trust;
}
public ProjectWrapper getProject() {
return project;
}
@JsonProperty("OS-TRUST:trust")
public TrustWrapper getTrust() {
return trust;
}
}
/**
* THIS CLASS IS MAPPED BY JACKSON TO AND FROM JSON.
* DO NOT RENAME OR MODIFY FIELDS AND THEIR ACCESSORS.
*/
public static class ProjectWrapper {
private final String name;
private final Map<String, String> domain;
public ProjectWrapper(String projectName, Map<String, String> domain) {
this.domain = domain;
this.name = projectName;
}
public String getName() {
return name;
}
public Map<String, String> getDomain() {
return domain;
}
}
/**
* THIS CLASS IS MAPPED BY JACKSON TO AND FROM JSON.
* DO NOT RENAME OR MODIFY FIELDS AND THEIR ACCESSORS.
*/
public static class TrustWrapper {
private final String id;
public TrustWrapper(String trustId) {
id = trustId;
}
public String getId() {
return id;
}
}
}