You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sm...@apache.org on 2014/11/11 21:38:49 UTC

[10/11] directory-fortress-enmasse git commit: change package structure and names, pom improvements, license

http://git-wip-us.apache.org/repos/asf/directory-fortress-enmasse/blob/99852b55/src/main/java/org/apache/directory/fortress/rest/AuditMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/rest/AuditMgrImpl.java b/src/main/java/org/apache/directory/fortress/rest/AuditMgrImpl.java
new file mode 100644
index 0000000..2baba96
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/rest/AuditMgrImpl.java
@@ -0,0 +1,176 @@
+/*
+ *   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.directory.fortress.rest;
+
+import org.apache.directory.fortress.core.AuditMgr;
+import org.apache.directory.fortress.core.AuditMgrFactory;
+import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.rbac.AuthZ;
+import org.apache.directory.fortress.core.rbac.Bind;
+import org.apache.directory.fortress.core.rbac.Mod;
+import org.apache.directory.fortress.core.rbac.UserAudit;
+import org.apache.directory.fortress.core.rest.FortRequest;
+import org.apache.directory.fortress.core.rest.FortResponse;
+import org.apache.log4j.Logger;
+
+import java.util.List;
+
+/**
+ * Utility for EnMasse Server.  This class is thread safe.
+ *
+ * @author Shawn McKinney
+ */
+class AuditMgrImpl
+{
+    private static final String CLS_NM = AuditMgrImpl.class.getName();
+    private static final Logger log = Logger.getLogger(CLS_NM);
+
+    /**
+     * ************************************************************************************************************************************
+     * BEGIN AUDIT
+     * **************************************************************************************************************************************
+     */
+
+    FortResponse searchBinds(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAudit inAudit = (UserAudit) request.getEntity();
+            AuditMgr auditMgr = AuditMgrFactory.createInstance(request.getContextId());
+            auditMgr.setAdmin(request.getSession());
+            List<Bind> outAudit = auditMgr.searchBinds(inAudit);
+            response.setEntities(outAudit);
+            response.setErrorCode(0);
+        }
+        catch (org.apache.directory.fortress.core.SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse getUserAuthZs(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAudit inAudit = (UserAudit)request.getEntity();
+            AuditMgr auditMgr = AuditMgrFactory.createInstance(request.getContextId());
+            auditMgr.setAdmin(request.getSession());
+            List<AuthZ> outAudit = auditMgr.getUserAuthZs(inAudit);
+            response.setEntities(outAudit);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse searchAuthZs(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAudit inAudit = (UserAudit)request.getEntity();
+            AuditMgr auditMgr = AuditMgrFactory.createInstance(request.getContextId());
+            auditMgr.setAdmin(request.getSession());
+            List<AuthZ> outAudit = auditMgr.searchAuthZs(inAudit);
+            response.setEntities(outAudit);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse searchUserSessions(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAudit inAudit = (UserAudit)request.getEntity();
+            AuditMgr auditMgr = AuditMgrFactory.createInstance(request.getContextId());
+            auditMgr.setAdmin(request.getSession());
+            List<Mod> outAudit = auditMgr.searchUserSessions(inAudit);
+            response.setEntities(outAudit);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse searchAdminMods(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAudit inAudit = (UserAudit)request.getEntity();
+            AuditMgr auditMgr = AuditMgrFactory.createInstance(request.getContextId());
+            auditMgr.setAdmin(request.getSession());
+            List<Mod> outAudit = auditMgr.searchAdminMods(inAudit);
+            response.setEntities(outAudit);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse searchInvalidUsers(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAudit inAudit = (UserAudit)request.getEntity();
+            AuditMgr auditMgr = AuditMgrFactory.createInstance(request.getContextId());
+            auditMgr.setAdmin(request.getSession());
+            List<AuthZ> outAudit = auditMgr.searchInvalidUsers(inAudit);
+            response.setEntities(outAudit);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-enmasse/blob/99852b55/src/main/java/org/apache/directory/fortress/rest/ConfigMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/rest/ConfigMgrImpl.java b/src/main/java/org/apache/directory/fortress/rest/ConfigMgrImpl.java
new file mode 100644
index 0000000..ccc0e4f
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/rest/ConfigMgrImpl.java
@@ -0,0 +1,159 @@
+/*
+ *   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.directory.fortress.rest;
+
+import org.apache.directory.fortress.core.cfg.ConfigMgr;
+import org.apache.directory.fortress.core.cfg.ConfigMgrFactory;
+import org.apache.directory.fortress.core.rbac.Props;
+import org.apache.directory.fortress.core.rest.FortRequest;
+import org.apache.directory.fortress.core.rest.FortResponse;
+import org.apache.directory.fortress.core.rest.RestUtils;
+import org.apache.log4j.Logger;
+
+import java.util.Properties;
+
+/**
+ * Utility for EnMasse Server.  This class is thread safe.
+ *
+ * @author Shawn McKinney
+ */
+class ConfigMgrImpl
+{
+    private static final String CLS_NM = ConfigMgrImpl.class.getName();
+    private static final Logger log = Logger.getLogger(CLS_NM);
+
+    /**
+     *
+     * @param request
+     * @return
+     */
+    FortResponse addConfig(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            ConfigMgr configMgr = ConfigMgrFactory.createInstance();
+            Properties inProperties = RestUtils.getProperties((Props)request.getEntity());
+            Properties outProperties = configMgr.add(request.getValue(), inProperties);
+            Props retProps = RestUtils.getProps(outProperties);
+            if (retProps != null)
+            {
+                response.setEntity(retProps);
+                response.setErrorCode(0);
+            }
+        }
+        catch (org.apache.directory.fortress.core.SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    /**
+     *
+     * @param request
+     * @return
+     */
+    FortResponse updateConfig(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            ConfigMgr configMgr = ConfigMgrFactory.createInstance();
+            Properties inProperties = RestUtils.getProperties((Props)request.getEntity());
+            Properties outProperties = configMgr.update(request.getValue(), inProperties);
+            Props retProps = RestUtils.getProps(outProperties);
+            if (retProps != null)
+            {
+                response.setEntity(retProps);
+                response.setErrorCode(0);
+            }
+        }
+        catch (org.apache.directory.fortress.core.SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    /**
+     *
+     * @param request
+     * @return
+     */
+    FortResponse deleteConfig(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            ConfigMgr configMgr = ConfigMgrFactory.createInstance();
+            if(request.getEntity() == null)
+            {
+                configMgr.delete(request.getValue());
+            }
+            else
+            {
+                Properties inProperties = RestUtils.getProperties((Props)request.getEntity());
+                configMgr.delete(request.getValue(), inProperties);
+
+            }
+            response.setErrorCode(0);
+        }
+        catch (org.apache.directory.fortress.core.SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    /**
+     *
+     * @param request
+     * @return
+     */
+    FortResponse readConfig(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            ConfigMgr configMgr = ConfigMgrFactory.createInstance();
+            Properties properties = configMgr.read(request.getValue());
+            Props props = RestUtils.getProps(properties);
+            if (properties != null)
+            {
+                response.setEntity(props);
+                response.setErrorCode(0);
+            }
+        }
+        catch (org.apache.directory.fortress.core.SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-enmasse/blob/99852b55/src/main/java/org/apache/directory/fortress/rest/DelegatedAccessMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/rest/DelegatedAccessMgrImpl.java b/src/main/java/org/apache/directory/fortress/rest/DelegatedAccessMgrImpl.java
new file mode 100644
index 0000000..e8d01db
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/rest/DelegatedAccessMgrImpl.java
@@ -0,0 +1,269 @@
+/*
+ *   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.directory.fortress.rest;
+
+import org.apache.directory.fortress.core.DelAccessMgr;
+import org.apache.directory.fortress.core.DelAccessMgrFactory;
+import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.rbac.RolePerm;
+import org.apache.directory.fortress.core.rbac.UserAdminRole;
+import org.apache.directory.fortress.core.rbac.Permission;
+import org.apache.directory.fortress.core.rbac.Role;
+import org.apache.directory.fortress.core.rbac.Session;
+import org.apache.directory.fortress.core.rbac.User;
+import org.apache.directory.fortress.core.rbac.UserRole;
+import org.apache.directory.fortress.core.rest.FortRequest;
+import org.apache.directory.fortress.core.rest.FortResponse;
+import org.apache.log4j.Logger;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Utility for EnMasse Server.  This class is thread safe.
+ *
+ * @author Shawn McKinney
+ */
+class DelegatedAccessMgrImpl
+{
+    private static final String CLS_NM = DelegatedAccessMgrImpl.class.getName();
+    private static final Logger log = Logger.getLogger(CLS_NM);
+
+    /**
+     * ************************************************************************************************************************************
+     * BEGIN DELEGATEDACCESSMGR
+     * **************************************************************************************************************************************
+     */
+
+    FortResponse canAssign(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserRole uRole = (UserRole) request.getEntity();
+            Session session = request.getSession();
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            boolean result = accessMgr.canAssign(session, new User(uRole.getUserId()), new Role(uRole.getName()));
+            response.setSession(session);
+            response.setAuthorized(result);
+            response.setErrorCode(0);
+        }
+        catch (org.apache.directory.fortress.core.SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse canDeassign(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserRole uRole = (UserRole) request.getEntity();
+            Session session = request.getSession();
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            boolean result = accessMgr.canDeassign(session, new User(uRole.getUserId()), new Role(uRole.getName()));
+            response.setSession(session);
+            response.setAuthorized(result);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse canGrant(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            RolePerm context = (RolePerm) request.getEntity();
+            Session session = request.getSession();
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            boolean result = accessMgr.canGrant(session, new Role(context.getRole().getName()), context.getPerm());
+            response.setSession(session);
+            response.setAuthorized(result);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse canRevoke(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            RolePerm context = (RolePerm) request.getEntity();
+            Session session = request.getSession();
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            boolean result = accessMgr.canRevoke(session, new Role(context.getRole().getName()), context.getPerm());
+            response.setSession(session);
+            response.setAuthorized(result);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    public FortResponse checkAdminAccess(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            Permission perm = (Permission) request.getEntity();
+            Session session = request.getSession();
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            perm.setAdmin(true);
+            boolean result = accessMgr.checkAccess(session, perm);
+            response.setSession(session);
+            response.setAuthorized(result);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse addActiveAdminRole(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAdminRole uAdminRole = (UserAdminRole) request.getEntity();
+            Session session = request.getSession();
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            accessMgr.addActiveRole(session, uAdminRole);
+            response.setSession(session);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse dropActiveAdminRole(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAdminRole uAdminRole = (UserAdminRole) request.getEntity();
+            Session session = request.getSession();
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            accessMgr.dropActiveRole(session, uAdminRole);
+            response.setSession(session);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse sessionAdminRoles(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            Session session = request.getSession();
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            List<UserAdminRole> roles = accessMgr.sessionAdminRoles(session);
+            response.setEntities(roles);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse sessionAdminPermissions(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            Session session = request.getSession();
+            List<Permission> perms = accessMgr.sessionPermissions(session);
+            response.setSession(session);
+            response.setEntities(perms);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse authorizedSessionRoles(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            DelAccessMgr accessMgr = DelAccessMgrFactory.createInstance(request.getContextId());
+            Session session = request.getSession();
+            Set<String> roles = accessMgr.authorizedAdminRoles(session);
+            response.setValueSet(roles);
+            response.setSession(session);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-enmasse/blob/99852b55/src/main/java/org/apache/directory/fortress/rest/DelegatedAdminMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/rest/DelegatedAdminMgrImpl.java b/src/main/java/org/apache/directory/fortress/rest/DelegatedAdminMgrImpl.java
new file mode 100644
index 0000000..46e9674
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/rest/DelegatedAdminMgrImpl.java
@@ -0,0 +1,386 @@
+/*
+ *   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.directory.fortress.rest;
+
+import org.apache.directory.fortress.core.DelAdminMgr;
+import org.apache.directory.fortress.core.DelAdminMgrFactory;
+import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.rbac.AdminRole;
+import org.apache.directory.fortress.core.rbac.AdminRoleRelationship;
+import org.apache.directory.fortress.core.rbac.OrgUnit;
+import org.apache.directory.fortress.core.rbac.OrgUnitRelationship;
+import org.apache.directory.fortress.core.rbac.UserAdminRole;
+import org.apache.directory.fortress.core.rest.FortRequest;
+import org.apache.directory.fortress.core.rest.FortResponse;
+import org.apache.log4j.Logger;
+
+
+/**
+ * Utility for EnMasse Server.  This class is thread safe.
+ *
+ * @author Shawn McKinney
+ */
+class DelegatedAdminMgrImpl
+{
+    private static final String CLS_NM = DelegatedAdminMgrImpl.class.getName();
+    private static final Logger log = Logger.getLogger(CLS_NM);
+
+    /**
+     * ************************************************************************************************************************************
+     * BEGIN DELEGATEDADMINMGR
+     * **************************************************************************************************************************************
+     */
+
+    FortResponse addAdminRole(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRole inRole = (AdminRole) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            AdminRole retRole = delegatedAdminMgr.addRole(inRole);
+            response.setEntity(retRole);
+            response.setErrorCode(0);
+        }
+        catch (org.apache.directory.fortress.core.SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se + " warnId=" + se.getErrorId());
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse deleteAdminRole(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRole inRole = (AdminRole) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.deleteRole(inRole);
+            response.setEntity(inRole);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse updateAdminRole(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRole inRole = (AdminRole) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            AdminRole retRole = delegatedAdminMgr.updateRole(inRole);
+            response.setEntity(retRole);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se + " errorId=" + se.getErrorId());
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse assignAdminUser(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAdminRole inRole = (UserAdminRole) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.assignUser(inRole);
+            response.setEntity(inRole);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse deassignAdminUser(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            UserAdminRole inRole = (UserAdminRole) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.deassignUser(inRole);
+            response.setEntity(inRole);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse addAdminDescendant(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRoleRelationship relationship = (AdminRoleRelationship) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.addDescendant(relationship.getParent(), relationship.getChild());
+            response.setEntity(relationship);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse addAdminAscendant(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRoleRelationship relationship = (AdminRoleRelationship) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.addAscendant(relationship.getChild(), relationship.getParent());
+            response.setEntity(relationship);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse addAdminInheritance(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRoleRelationship relationship = (AdminRoleRelationship) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.addInheritance(relationship.getParent(), relationship.getChild());
+            response.setEntity(relationship);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse deleteAdminInheritance(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRoleRelationship relationship = (AdminRoleRelationship) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.deleteInheritance(relationship.getParent(), relationship.getChild());
+            response.setEntity(relationship);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse addOrg(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnit inOrg = (OrgUnit) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            OrgUnit retOrg = delegatedAdminMgr.add(inOrg);
+            response.setEntity(retOrg);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse updateOrg(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnit inOrg = (OrgUnit) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            OrgUnit retOrg = delegatedAdminMgr.update(inOrg);
+            response.setEntity(retOrg);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse deleteOrg(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnit inOrg = (OrgUnit) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            OrgUnit retOrg = delegatedAdminMgr.delete(inOrg);
+            response.setEntity(retOrg);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse addOrgDescendant(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnitRelationship relationship = (OrgUnitRelationship) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.addDescendant(relationship.getParent(), relationship.getChild());
+            response.setEntity(relationship);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse addOrgAscendant(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnitRelationship relationship = (OrgUnitRelationship) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.addAscendant(relationship.getChild(), relationship.getParent());
+            response.setEntity(relationship);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse addOrgInheritance(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnitRelationship relationship = (OrgUnitRelationship) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.addInheritance(relationship.getParent(), relationship.getChild());
+            response.setEntity(relationship);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse deleteOrgInheritance(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnitRelationship relationship = (OrgUnitRelationship) request.getEntity();
+            DelAdminMgr delegatedAdminMgr = DelAdminMgrFactory.createInstance(request.getContextId());
+            delegatedAdminMgr.setAdmin(request.getSession());
+            delegatedAdminMgr.deleteInheritance(relationship.getParent(), relationship.getChild());
+            response.setEntity(relationship);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-enmasse/blob/99852b55/src/main/java/org/apache/directory/fortress/rest/DelegatedReviewMgrImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/rest/DelegatedReviewMgrImpl.java b/src/main/java/org/apache/directory/fortress/rest/DelegatedReviewMgrImpl.java
new file mode 100644
index 0000000..44d32d2
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/rest/DelegatedReviewMgrImpl.java
@@ -0,0 +1,176 @@
+/*
+ *   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.directory.fortress.rest;
+
+import org.apache.directory.fortress.core.DelReviewMgr;
+import org.apache.directory.fortress.core.DelReviewMgrFactory;
+import org.apache.directory.fortress.core.SecurityException;
+import org.apache.directory.fortress.core.rbac.AdminRole;
+import org.apache.directory.fortress.core.rbac.OrgUnit;
+import org.apache.directory.fortress.core.rbac.UserAdminRole;
+import org.apache.directory.fortress.core.rbac.User;
+import org.apache.directory.fortress.core.rest.FortRequest;
+import org.apache.directory.fortress.core.rest.FortResponse;
+import org.apache.log4j.Logger;
+
+import java.util.List;
+
+/**
+ * Utility for EnMasse Server.  This class is thread safe.
+ *
+ * @author Shawn McKinney
+ */
+class DelegatedReviewMgrImpl
+{
+    private static final String CLS_NM = DelegatedReviewMgrImpl.class.getName();
+    private static final Logger log = Logger.getLogger(CLS_NM);
+
+    /**
+     * ************************************************************************************************************************************
+     * BEGIN DELEGATEDREVIEWMGR
+     * **************************************************************************************************************************************
+     */
+
+    FortResponse readAdminRole(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRole inRole = (AdminRole) request.getEntity();
+            DelReviewMgr delegatedReviewMgr = DelReviewMgrFactory.createInstance(request.getContextId());
+            AdminRole outRole = delegatedReviewMgr.readRole(inRole);
+            response.setEntity(outRole);
+            response.setErrorCode(0);
+        }
+        catch (org.apache.directory.fortress.core.SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse findAdminRoles(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            String searchVal = request.getValue();
+            DelReviewMgr delegatedReviewMgr = DelReviewMgrFactory.createInstance(request.getContextId());
+            delegatedReviewMgr.setAdmin(request.getSession());
+            List<AdminRole> outRoles = delegatedReviewMgr.findRoles(searchVal);
+            response.setEntities(outRoles);
+            response.setErrorCode(0);
+
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse assignedAdminRoles(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            User inUser = (User)request.getEntity();
+            DelReviewMgr delegatedReviewMgr = DelReviewMgrFactory.createInstance(request.getContextId());
+            delegatedReviewMgr.setAdmin(request.getSession());
+            List<UserAdminRole> uRoles = delegatedReviewMgr.assignedRoles(inUser);
+            response.setEntities(uRoles);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse assignedAdminUsers(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            AdminRole inRole = (AdminRole) request.getEntity();
+            DelReviewMgr delegatedReviewMgr = DelReviewMgrFactory.createInstance(request.getContextId());
+            delegatedReviewMgr.setAdmin(request.getSession());
+            List<User> users = delegatedReviewMgr.assignedUsers(inRole);
+            response.setEntities(users);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse readOrg(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnit inOrg = (OrgUnit) request.getEntity();
+            DelReviewMgr delegatedReviewMgr = DelReviewMgrFactory.createInstance(request.getContextId());
+            delegatedReviewMgr.setAdmin(request.getSession());
+            OrgUnit returnOrg = delegatedReviewMgr.read(inOrg);
+            response.setEntity(returnOrg);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+
+    FortResponse searchOrg(FortRequest request)
+    {
+        FortResponse response = new FortResponse();
+        try
+        {
+            OrgUnit inOrg = (OrgUnit) request.getEntity();
+            DelReviewMgr delegatedReviewMgr = DelReviewMgrFactory.createInstance(request.getContextId());
+            delegatedReviewMgr.setAdmin(request.getSession());
+            List<OrgUnit> orgs = delegatedReviewMgr.search(inOrg.getType(), inOrg.getName());
+            response.setEntities(orgs);
+            response.setErrorCode(0);
+        }
+        catch (SecurityException se)
+        {
+            log.info(CLS_NM + " caught " + se);
+            response.setErrorCode(se.getErrorId());
+            response.setErrorMessage(se.getMessage());
+        }
+        return response;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-fortress-enmasse/blob/99852b55/src/main/java/org/apache/directory/fortress/rest/FortressInterceptor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/rest/FortressInterceptor.java b/src/main/java/org/apache/directory/fortress/rest/FortressInterceptor.java
new file mode 100644
index 0000000..072065f
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/rest/FortressInterceptor.java
@@ -0,0 +1,192 @@
+/*
+ *   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.directory.fortress.rest;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.cxf.common.classloader.ClassLoaderUtils;
+import org.apache.cxf.common.util.ClassHelper;
+import org.apache.cxf.interceptor.security.SimpleAuthorizingInterceptor;
+
+
+/**
+ * Security Utility for EnMasse Server.
+ *
+ * @author Shawn McKinney
+ */
+public class FortressInterceptor extends SimpleAuthorizingInterceptor
+{
+    private static final String CLS_NM = FortressInterceptor.class.getName();
+    private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(CLS_NM);
+
+    private static final String DEFAULT_ANNOTATION_CLASS_NAME = "javax.annotation.security.RolesAllowed";
+    private static final Set<String> SKIP_METHODS;
+
+    static
+    {
+        SKIP_METHODS = new HashSet<String>();
+        SKIP_METHODS.addAll(Arrays.asList(
+            new String[]{"wait", "notify", "notifyAll",
+                "equals", "toString", "hashCode"}));
+    }
+
+    private String annotationClassName = DEFAULT_ANNOTATION_CLASS_NAME;
+
+    /**
+     *
+     * @param name
+     */
+    public void setAnnotationClassName(String name)
+    {
+        try
+        {
+            log.info(CLS_NM + ".setAnnotationClassName:" + name);
+            ClassLoaderUtils.loadClass(name, FortressInterceptor.class);
+            annotationClassName = name;
+        }
+        catch (ClassNotFoundException ex)
+        {
+            String warning = CLS_NM + ".setAnnotationClassName caught ClassNotFoundException-" + ex;
+            log.info((warning));
+        }
+    }
+
+    /**
+     *
+     * @param object
+     */
+    public void setSecuredObject(Object object)
+    {
+        log.info(CLS_NM + ".setSecuredObject:" + object);
+        Class<?> cls = ClassHelper.getRealClass(object);
+        Map<String, String> rolesMap = new HashMap<String, String>();
+        findRoles(cls, rolesMap);
+        if (rolesMap.isEmpty())
+        {
+            log.info(CLS_NM + ".setSecuredObject The roles map is empty, the service object is not protected");
+        }
+        else if (log.isDebugEnabled())
+        {
+            for (Map.Entry<String, String> entry : rolesMap.entrySet())
+            {
+                log.debug(CLS_NM + ".setSecuredObject Method: " + entry.getKey() + ", roles: " + entry.getValue());
+            }
+        }
+        super.setMethodRolesMap(rolesMap);
+    }
+
+    /**
+     *
+     * @param cls
+     * @param rolesMap
+     */
+    protected void findRoles(Class<?> cls, Map<String, String> rolesMap)
+    {
+        log.info(CLS_NM + ".findRoles:" + rolesMap);
+        if (cls == null || cls == Object.class)
+        {
+            return;
+        }
+        String classRolesAllowed = getRoles(cls.getAnnotations(), annotationClassName);
+        for (Method m : cls.getMethods())
+        {
+            if (SKIP_METHODS.contains(m.getName()))
+            {
+                continue;
+            }
+            String methodRolesAllowed = getRoles(m.getAnnotations(), annotationClassName);
+            String theRoles = methodRolesAllowed != null ? methodRolesAllowed : classRolesAllowed;
+            if (theRoles != null)
+            {
+                rolesMap.put(m.getName(), theRoles);
+            }
+        }
+        if (!rolesMap.isEmpty())
+        {
+            return;
+        }
+
+        findRoles(cls.getSuperclass(), rolesMap);
+
+        if (!rolesMap.isEmpty())
+        {
+            return;
+        }
+
+        for (Class<?> interfaceCls : cls.getInterfaces())
+        {
+            findRoles(interfaceCls, rolesMap);
+        }
+    }
+
+    /**
+     *
+     * @param anns
+     * @param annName
+     * @return String roles
+     */
+    private String getRoles(Annotation[] anns, String annName)
+    {
+        log.debug(CLS_NM + ".getRoles:" + annName);
+        for (Annotation ann : anns)
+        {
+            if (ann.annotationType().getName().equals(annName))
+            {
+                try
+                {
+                    Method valueMethod = ann.annotationType().getMethod("value", new Class[]{});
+                    String[] roles = (String[]) valueMethod.invoke(ann, new Object[]{});
+                    StringBuilder sb = new StringBuilder();
+                    for (int i = 0; i < roles.length; i++)
+                    {
+                        sb.append(roles[i]);
+                        if (i + 1 < roles.length)
+                        {
+                            sb.append(" ");
+                        }
+                    }
+                    return sb.toString();
+                }
+                catch (java.lang.NoSuchMethodException ex)
+                {
+                    log.info(CLS_NM + ".getRoles annName=" + annName + ", caught NoSuchMethodException=" + ex);
+                }
+                catch (java.lang.IllegalAccessException ex)
+                {
+                    log.info(CLS_NM + ".getRoles annName=" + annName + ", caught IllegalAccessException=" + ex);
+                }
+                catch (InvocationTargetException ex)
+                {
+                    log.info(CLS_NM + ".getRoles annName=" + annName + ", caught InvocationTargetException=" + ex);
+                }
+                break;
+            }
+        }
+        return null;
+    }
+}
+