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;
+ }
+}
+