/* * 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.common; import org.jboss.as.connector.metadata.api.common.Security; import org.jboss.jca.common.api.validator.ValidateException; /** * Extension of {@link org.jboss.jca.common.metadata.common.SecurityImpl} with added Elytron support. * * @author Flavia Rainone */ public class SecurityImpl extends org.jboss.jca.common.metadata.common.SecurityImpl implements Security { private static final long serialVersionUID = -4549127155646451392L; /** * Indicates if the Security data belongs to Elytron or PicketBox. */ private boolean elytronEnabled; /** * Constructor * * @param securityDomain security domain managed authentication. Security domain will refer to a PicketBox * security domain if Elytron is disabled, or to an Elytron authentication context * otherwise * @param securityDomainAndApplication securityDomain and application managed authentication. This field will refer to a * PicketBox security domain if Elytron is disabled, or to an Elytron authentication * context otherwise * @param applicationManaged application managed authentication * @param elytronEnabled in case one of {@param securityDomain} or {@param securityDomainAndApplication} is * not null, this field will indicate if Elytron will be responsible for authentication * @throws ValidateException ValidateException in case of a validation error */ public SecurityImpl(String securityDomain, String securityDomainAndApplication, boolean applicationManaged, boolean elytronEnabled) throws ValidateException { super(securityDomain, securityDomainAndApplication, applicationManaged); this.elytronEnabled = elytronEnabled; } /** * Indicates if Elytron is enabled. In this case, {@link #getSecurityDomain()} and * {@link #getSecurityDomainAndApplication()} both refer to an Elytron authentication context. * * @return {@code true} if is Elytron enabled */ @Override public boolean isElytronEnabled() { return elytronEnabled; } /** * {@inheritDoc} */ @Override public int hashCode() { return super.hashCode() + (elytronEnabled? 1: 0); } /** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof SecurityImpl) { SecurityImpl other = (SecurityImpl) obj; if (elytronEnabled != other.elytronEnabled) return false; } return super.equals(obj); } /** * {@inheritDoc} */ @Override public String toString() { if (!elytronEnabled) return super.toString(); StringBuilder sb = new StringBuilder(1024); sb.append("<security>"); sb.append("</").append(Security.Tag.ELYTRON_ENABLED).append(">"); if (getSecurityDomain() != null) { sb.append("<").append(Security.Tag.AUTHENTICATION_CONTEXT).append("/>"); sb.append(getSecurityDomain()); sb.append("</").append(Security.Tag.AUTHENTICATION_CONTEXT).append("/>"); } else { sb.append("<").append(Security.Tag.AUTHENTICATION_CONTEXT_AND_APPLICATION).append("/>"); sb.append(getSecurityDomainAndApplication()); sb.append("</").append(Security.Tag.AUTHENTICATION_CONTEXT_AND_APPLICATION).append("/>"); } sb.append("</security>"); return sb.toString(); } }