/*
* Copyright 2017 Red Hat, Inc.
*
* Licensed 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.jboss.as.connector.metadata.ds;
import java.util.Objects;
import org.jboss.as.connector.metadata.api.common.Credential;
import org.jboss.as.connector.metadata.api.ds.DsSecurity;
import org.jboss.as.connector.metadata.common.CredentialImpl;
import org.jboss.jca.common.api.metadata.common.Extension;
import org.jboss.jca.common.api.validator.ValidateException;
import org.wildfly.common.function.ExceptionSupplier;
import org.wildfly.security.credential.source.CredentialSource;
/**
* Extension of {@link org.jboss.jca.common.metadata.ds.DsSecurityImpl} with added Elytron support.
*
* @author Flavia Rainone
*/
public class DsSecurityImpl extends CredentialImpl implements DsSecurity, Credential {
private static final long serialVersionUID = 312322268048179001L;
private final Extension reauthPlugin;
/**
* Create a new DsSecurityImpl.
*
* @param userName user name
* @param password user password
* @param securityContext specific information used by implementation to define in which context this user/password info
* belongs
* @param elytronEnabled indicates if elytron is enabled. In this case, {@param securityContext}, defined as
* securityDomain in super class, refers to an Elytron authentication context
* @param reauthPlugin reauthentication plugin
* @param credentialSourceSupplier an Elytron credentia supplier
* @throws ValidateException in case of validation error
*/
public DsSecurityImpl(final String userName, final String password, final String securityContext, final boolean elytronEnabled,
final ExceptionSupplier<CredentialSource, Exception> credentialSourceSupplier, Extension reauthPlugin) throws ValidateException {
super(userName, password, securityContext, elytronEnabled, credentialSourceSupplier);
this.reauthPlugin = reauthPlugin;
this.validate();
}
public Extension getReauthPlugin() {
return this.reauthPlugin;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (!super.equals(o)) return false;
DsSecurityImpl that = (DsSecurityImpl) o;
return Objects.equals(reauthPlugin, that.reauthPlugin);
}
@Override
public int hashCode() {
return Objects.hash(super.hashCode(), reauthPlugin);
}
@Override
public String toString() {
return "DsSecurityImpl{" +
"userName='" + getUserName() + '\'' +
", password='" + getPassword() + '\'' +
", securityDomain='" + getSecurityDomain() + '\'' +
", elytronEnabled=" + isElytronEnabled() +
"reauthPlugin=" + reauthPlugin +
'}';
}
}