[rhq] Branch 'release/jon3.1.x' - modules/enterprise
lkrejci
lkrejci at fedoraproject.org
Fri Aug 31 12:37:02 UTC 2012
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java | 18 +--------
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java | 19 ----------
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java | 5 +-
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java | 4 +-
4 files changed, 7 insertions(+), 39 deletions(-)
New commits:
commit e23f9cea52ff4576546db93c546942ea95043ec6
Author: Lukas Krejci <lkrejci at redhat.com>
Date: Fri Aug 31 14:34:38 2012 +0200
Revert "[BZ 846623] - When creating the "child" alert definitions of group or template alert definitions, pass the real user that creates the alert def and circumvent authz."
This reverts commit 97f5db48e4570c3cf8ee516de5bda7aff31c59a9.
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
index 1bcd585..79fca41 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerBean.java
@@ -196,23 +196,9 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
return results;
}
- @Override
- @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
- public int createDependentAlertDefinition(Subject subject, AlertDefinition alertDefinition, int resourceId)
- throws InvalidAlertDefinitionException {
-
- return createAlertDefinitionInternal(subject, alertDefinition, resourceId, false);
- }
-
- @Override
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public int createAlertDefinition(Subject subject, AlertDefinition alertDefinition, Integer resourceId)
throws InvalidAlertDefinitionException {
-
- return createAlertDefinitionInternal(subject, alertDefinition, resourceId, true);
- }
-
- private int createAlertDefinitionInternal(Subject subject, AlertDefinition alertDefinition, Integer resourceId, boolean checkPerms) throws InvalidAlertDefinitionException {
checkAlertDefinition(subject, alertDefinition, resourceId);
// if this is an alert definition, set up the link to a resource
@@ -226,7 +212,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
}
// after the resource is set up (in the case of non-templates), we can use the checkPermission on it
- if (checkPerms && checkPermission(subject, alertDefinition) == false) {
+ if (checkPermission(subject, alertDefinition) == false) {
if (alertDefinition.getResourceType() != null) {
throw new PermissionException("User [" + subject.getName()
+ "] does not have permission to create alert templates for type ["
@@ -279,7 +265,7 @@ public class AlertDefinitionManagerBean implements AlertDefinitionManagerLocal,
return alertDefinition.getId();
}
-
+
private void fixRecoveryId(AlertDefinition definition) {
try {
if (definition.getParentId() != 0 && definition.getRecoveryId() != 0) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java
index 45b7252..03c8945 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertDefinitionManagerLocal.java
@@ -48,25 +48,6 @@ public interface AlertDefinitionManagerLocal {
int createAlertDefinition(Subject subject, AlertDefinition alertDefinition, Integer resourceId)
throws InvalidAlertDefinitionException;
- /**
- * This is exactly the same as {@link #createAlertDefinition(Subject, AlertDefinition, Integer)} but
- * assumes the resource is part of a group (or has given resource type for templates) for which
- * a group or template alert definition is being created.
- * <p>
- * This method assumes the caller already checked the subject has permissions to create a group or template alert
- * definition on a group / resource type the resource is member of.
- * <p>
- * In another words this method is a helper to
- * {@link GroupAlertDefinitionManagerLocal#createGroupAlertDefinitions(Subject, AlertDefinition, Integer)} and
- * {@link AlertTemplateManagerLocal#createAlertTemplate(Subject, AlertDefinition, Integer)}.
- *
- * @param subject the user that is creating the group or template alert definition
- * @param alertDefinition the alert definition on the resource
- * @param resourceId the resource
- * @return the id of the newly created alert definition
- */
- int createDependentAlertDefinition(Subject subject, AlertDefinition alertDefinition, int resourceId);
-
boolean isEnabled(Integer definitionId);
boolean isTemplate(Integer definitionId);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java
index ff00dd6..94f1d35 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/AlertTemplateManagerBean.java
@@ -128,6 +128,7 @@ public class AlertTemplateManagerBean implements AlertTemplateManagerLocal {
+ alertTemplate.toSimpleString(), t);
}
+ Subject overlord = subjectManager.getOverlord();
Throwable firstThrowable = null;
List<Integer> resourceIdsForType = getCommittedResourceIdsNeedingTemplateApplication(user, alertTemplateId,
@@ -139,8 +140,8 @@ public class AlertTemplateManagerBean implements AlertTemplateManagerLocal {
AlertDefinition childAlertDefinition = new AlertDefinition(alertTemplate);
childAlertDefinition.setParentId(alertTemplate.getId());
- // persist the child as a dependent alert definition
- alertDefinitionManager.createDependentAlertDefinition(user, childAlertDefinition, resourceId);
+ // persist the child using overlord
+ alertDefinitionManager.createAlertDefinition(overlord, childAlertDefinition, resourceId);
} catch (Throwable t) {
// continue on error, create as many as possible
if (firstThrowable == null) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java
index 7df0c67..8974c30 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/alert/GroupAlertDefinitionManagerBean.java
@@ -137,7 +137,6 @@ public class GroupAlertDefinitionManagerBean implements GroupAlertDefinitionMana
return list;
}
- @Override
@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
public int createGroupAlertDefinitions(Subject subject, AlertDefinition groupAlertDefinition,
Integer resourceGroupId) throws InvalidAlertDefinitionException, AlertDefinitionCreationException {
@@ -152,6 +151,7 @@ public class GroupAlertDefinitionManagerBean implements GroupAlertDefinitionMana
+ " with data " + groupAlertDefinition.toSimpleString(), t);
}
+ Subject overlord = subjectManager.getOverlord();
Throwable firstThrowable = null;
List<Integer> resourceIdsForGroup = getCommittedResourceIdsNeedingGroupAlertDefinitionApplication(subject,
@@ -164,7 +164,7 @@ public class GroupAlertDefinitionManagerBean implements GroupAlertDefinitionMana
childAlertDefinition.setGroupAlertDefinition(groupAlertDefinition);
// persist the child
- alertDefinitionManager.createDependentAlertDefinition(subject, childAlertDefinition, resourceId);
+ alertDefinitionManager.createAlertDefinition(overlord, childAlertDefinition, resourceId);
} catch (Throwable t) {
// continue on error, create as many as possible
if (firstThrowable == null) {
More information about the rhq-commits
mailing list