@@ -0,0 +1,2985 @@
+/*%0A * JBoss, Home of Professional Open Source.%0A * Copyright 2015, Red Hat, Inc., and individual contributors%0A * as indicated by the @author tags. See the copyright.txt file in the%0A * distribution for a full listing of individual contributors.%0A *%0A * This is free software; you can redistribute it and/or modify it%0A * under the terms of the GNU Lesser General Public License as%0A * published by the Free Software Foundation; either version 2.1 of%0A * the License, or (at your option) any later version.%0A *%0A * This software is distributed in the hope that it will be useful,%0A * but WITHOUT ANY WARRANTY; without even the implied warranty of%0A * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU%0A * Lesser General Public License for more details.%0A *%0A * You should have received a copy of the GNU Lesser General Public%0A * License along with this software; if not, write to the Free%0A * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA%0A * 02110-1301 USA, or see the FSF site: http://www.fsf.org.%0A */%0A%0Apackage org.picketbox.plugins;%0A%0Aimport org.jboss.security.AuthenticationManager;%0Aimport org.jboss.security.AuthorizationManager;%0Aimport org.jboss.security.ISecurityManagement;%0Aimport org.jboss.security.JSSESecurityDomain;%0Aimport org.jboss.security.audit.AuditManager;%0Aimport org.jboss.security.identitytrust.IdentityTrustManager;%0Aimport org.jboss.security.mapping.MappingManager;%0Aimport org.picketbox.factories.SecurityFactory;%0A%0A/**%0A * A %7B@link ISecurityManagement%7D implementation that delegates to the instance registered with the %7B@link SecurityFactory%7D.%0A *%0A * @author %3Ca href=%22mailto:darran.lofthouse@jboss.com%22%3EDarran Lofthouse%3C/a%3E%0A */%0Apublic class SecurityFactorySecurityManagement implements ISecurityManagement %7B%0A%0A    private static final long serialVersionUID = 4533649455497748886L;%0A%0A    private transient ISecurityManagement delegate;%0A%0A    private ISecurityManagement getDelegate() %7B%0A        return delegate != null ? delegate : (delegate = SecurityFactory.getSecurityManagement());%0A    %7D%0A%0A    @Override%0A    public AuthenticationManager getAuthenticationManager(String securityDomain) %7B%0A        return getDelegate().getAuthenticationManager(securityDomain);%0A    %7D%0A%0A    @Override%0A    public AuthorizationManager getAuthorizationManager(String securityDomain) %7B%0A        return getDelegate().getAuthorizationManager(securityDomain);%0A    %7D%0A%0A    @Override%0A    public MappingManager getMappingManager(String securityDomain) %7B%0A        return getDelegate().getMappingManager(securityDomain);%0A    %7D%0A%0A    @Override%0A    public AuditManager getAuditManager(String securityDomain) %7B%0A        return getDelegate().getAuditManager(securityDomain);%0A    %7D%0A%0A    @Override%0A    public IdentityTrustManager getIdentityTrustManager(String securityDomain) %7B%0A        return getDelegate().getIdentityTrustManager(securityDomain);%0A    %7D%0A%0A    @Override%0A    public JSSESecurityDomain getJSSE(String securityDomain) %7B%0A        return getDelegate().getJSSE(securityDomain);%0A    %7D%0A%0A%7D%0A

Add an implementation of ISecurityManagement that can use the SecurityFactory to find a globally registered implementation to delegate to.