Permalink
Browse files

[AS7-4312] Add a registry for the security realms so that they can su…

…bsequently be accessed from outside the service dependency mechanisms.
  • Loading branch information...
1 parent c46a34e commit 4fe250cfed11a9dcd8a16e0b73c279aa5b75706d @darranl darranl committed with kabir Mar 28, 2012
@@ -69,8 +69,6 @@ private static void checkPermission(final Permission permission) {
if (securityManager != null) {
securityManager.checkPermission(permission);
}
-
-
}
}
@@ -0,0 +1,71 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2012, Red Hat, Inc., and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.as.domain.management.security;
+
+import java.security.Permission;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.jboss.as.domain.management.SecurityRealm;
+
+/**
+ * A registry to store references to currently available realms.
+ *
+ * PLEASE NOTE - This is an internal API so is subject to change in future releases.
+ *
+ * @author <a href="mailto:darran.lofthouse@jboss.com">Darran Lofthouse</a>
+ */
+public class SecurityRealmRegistry {
+
+ private static final RuntimePermission LOOKUP_REALM_PERMISSION = new RuntimePermission("org.jboss.as.domain.management.security.LOOKUP_REALM");
+
+ private static Map<String, SecurityRealm> realms = new HashMap<String, SecurityRealm>();
+
+ public static SecurityRealm lookup(final String name) {
+ checkPermission(LOOKUP_REALM_PERMISSION);
+
+ return realms.get(name);
+ }
+
+ static void register(final String name, final SecurityRealm realm) {
+ // No permission check as we are only called from this package, if visibility
+ // is increased a permission should be added.
+
+ realms.put(name, realm);
+ }
+
+ static void remove(final String name) {
+ // No permission check as we are only called from this package, if visibility
+ // is increased a permission should be added.
+
+ realms.remove(name);
+ }
+
+ private static void checkPermission(final Permission permission) {
+ SecurityManager securityManager = System.getSecurityManager();
+ if (securityManager != null) {
+ securityManager.checkPermission(permission);
+ }
+ }
+
+}
@@ -45,7 +45,7 @@
*
* @author <a href="mailto:darran.lofthouse@jboss.com">Darran Lofthouse</a>
*/
-public class SecurityRealmService implements Service<SecurityRealmService>, SecurityRealm {
+public class SecurityRealmService implements Service<SecurityRealm>, SecurityRealm {
public static final ServiceName BASE_SERVICE_NAME = ServiceName.JBOSS.append("server", "controller", "management", "security_realm");
@@ -62,10 +62,12 @@ public SecurityRealmService(String name) {
public void start(StartContext context) throws StartException {
ROOT_LOGGER.debugf("Starting '%s' Security Realm Service", name);
+ SecurityRealmRegistry.register(name, getValue());
}
public void stop(StopContext context) {
ROOT_LOGGER.debugf("Stopping '%s' Security Realm Service", name);
+ SecurityRealmRegistry.remove(name);
}
public SecurityRealmService getValue() throws IllegalStateException, IllegalArgumentException {

0 comments on commit 4fe250c

Please sign in to comment.