modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java | 26 +++++----- 1 file changed, 13 insertions(+), 13 deletions(-)
New commits: commit 652d90efa3584115cf6c0747902e449e59a41038 Author: Joseph Marques joseph@redhat.com Date: Mon Dec 20 04:20:04 2010 -0500
append new lines to enhanced group authorization where fragment
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java index 2ef27e2..ea4cf62 100644 --- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java +++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/util/CriteriaQueryGenerator.java @@ -183,7 +183,7 @@ public final class CriteriaQueryGenerator { * chains: 1) role-based for groups, 2) role-based for containing cluster groups, 3) private groups. * so, we need to support group token authorization using a more complicated where-filter. */ - setAuthorizationCustomConditionFragment(getEnhancedGroupAuthorizationJoinFragment(fragment, subjectId)); + setAuthorizationCustomConditionFragment(getEnhancedGroupAuthorizationWhereFragment(fragment, subjectId)); } else { throw new IllegalArgumentException(this.getClass().getSimpleName() + " does not yet support generating queries for '" + type + "' token types"); @@ -206,19 +206,19 @@ public final class CriteriaQueryGenerator { } }
- private String getEnhancedGroupAuthorizationJoinFragment(String fragment, int subjectId) { + private String getEnhancedGroupAuthorizationWhereFragment(String fragment, int subjectId) { String customAuthzFragment = "" // - + "( %alias%.id IN ( SELECT %alias%.id " // - + " FROM %alias%.roles r JOIN r.subjects s " // - + " WHERE s.id = %subjectId% )" // - + " OR" // - + " %alias%.id IN ( SELECT %alias%.id " // - + " FROM %alias%.clusterResourceGroup crg JOIN crg.roles r JOIN r.subjects s " // - + " WHERE crg.recursive = true AND s = %subjectId% )" // - + " OR" // - + " %alias%.id IN ( SELECT %alias%.id" // - + " FROM %alias%.subject s" // - + " WHERE s.id = %subjectId% )"; + + "( %alias%.id IN ( SELECT %alias%.id " + NL // + + " FROM %alias%.roles r JOIN r.subjects s " + NL // + + " WHERE s.id = %subjectId% )" + NL // + + " OR" + NL // + + " %alias%.id IN ( SELECT %alias%.id " + NL // + + " FROM %alias%.clusterResourceGroup crg JOIN crg.roles r JOIN r.subjects s " + NL // + + " WHERE crg.recursive = true AND s = %subjectId% )" + NL // + + " OR" + NL // + + " %alias%.id IN ( SELECT %alias%.id" + NL // + + " FROM %alias%.subject s" + NL // + + " WHERE s.id = %subjectId% ) ) " + NL; String aliasReplacement = (fragment != null ? fragment + "." : "") + criteria.getAlias(); customAuthzFragment = customAuthzFragment.replace("%alias%", aliasReplacement); customAuthzFragment = customAuthzFragment.replace("%subjectId%", String.valueOf(subjectId));