From bde2b2e2936a532f83357ee391a4866d315a00ad Mon Sep 17 00:00:00 2001 From: Jan Vonka Date: Tue, 28 Jun 2011 08:03:21 +0000 Subject: [PATCH] ALF-9321 (RINF 11): CQ permissions - minor: push down common method lookup code git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28640 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- ...raftsAndPublishedBlogPostsCannedQuery.java | 6 ++--- ...dPublishedBlogPostsCannedQueryFactory.java | 21 ++---------------- .../repo/blog/GetBlogPostsCannedQuery.java | 6 ++--- .../blog/GetBlogPostsCannedQueryFactory.java | 20 +---------------- ...raftsAndPublishedBlogPostsCannedQuery.java | 6 ++--- ...dPublishedBlogPostsCannedQueryFactory.java | 21 ++---------------- .../GetBlogPostsCannedQuery.java | 6 ++--- .../GetBlogPostsCannedQueryFactory.java | 20 +---------------- .../getchildren/GetChildrenCannedQuery.java | 6 ++--- .../GetChildrenCannedQueryFactory.java | 22 ++----------------- .../authority/GetAuthoritiesCannedQuery.java | 6 ++--- .../GetAuthoritiesCannedQueryFactory.java | 18 +-------------- .../acegi/AbstractCannedQueryPermissions.java | 19 +++++++++++++++- 13 files changed, 45 insertions(+), 132 deletions(-) diff --git a/source/java/org/alfresco/repo/blog/DraftsAndPublishedBlogPostsCannedQuery.java b/source/java/org/alfresco/repo/blog/DraftsAndPublishedBlogPostsCannedQuery.java index 39e48a49b0..00a0b68a53 100644 --- a/source/java/org/alfresco/repo/blog/DraftsAndPublishedBlogPostsCannedQuery.java +++ b/source/java/org/alfresco/repo/blog/DraftsAndPublishedBlogPostsCannedQuery.java @@ -18,7 +18,6 @@ */ package org.alfresco.repo.blog; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -56,11 +55,12 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP NodeService rawNodeService, TaggingService taggingService, MethodSecurityInterceptor methodSecurityInterceptor, - Method method, + Object methodService, + String methodName, CannedQueryParameters params, String queryExecutionId) { - super(params, queryExecutionId, methodSecurityInterceptor, method); + super(params, queryExecutionId, methodSecurityInterceptor, methodService, methodName); this.rawNodeService = rawNodeService; this.taggingService = taggingService; } diff --git a/source/java/org/alfresco/repo/blog/DraftsAndPublishedBlogPostsCannedQueryFactory.java b/source/java/org/alfresco/repo/blog/DraftsAndPublishedBlogPostsCannedQueryFactory.java index 1d218f108d..982cad8e12 100644 --- a/source/java/org/alfresco/repo/blog/DraftsAndPublishedBlogPostsCannedQueryFactory.java +++ b/source/java/org/alfresco/repo/blog/DraftsAndPublishedBlogPostsCannedQueryFactory.java @@ -18,12 +18,10 @@ */ package org.alfresco.repo.blog; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Date; import java.util.List; -import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.query.AbstractCannedQueryFactory; import org.alfresco.query.CannedQuery; @@ -88,27 +86,12 @@ public class DraftsAndPublishedBlogPostsCannedQueryFactory extends AbstractCanne @Override public CannedQuery getCannedQuery(CannedQueryParameters parameters) { - Method method = null; - for (Method m : methodService.getClass().getMethods()) - { - // note: currently matches first found - if (m.getName().equals(methodName)) - { - method = m; - break; - } - } - - if (method == null) - { - throw new AlfrescoRuntimeException("Method not found: "+methodName); - } - // if not passed in (TODO or not in future cache) then generate a new query execution id String queryExecutionId = (parameters.getQueryExecutionId() == null ? super.getQueryExecutionId(parameters) : parameters.getQueryExecutionId()); final DraftsAndPublishedBlogPostsCannedQuery cq = new DraftsAndPublishedBlogPostsCannedQuery(rawNodeService, taggingService, - methodSecurityInterceptor, method, parameters, queryExecutionId); + methodSecurityInterceptor, methodService, methodName, + parameters, queryExecutionId); return (CannedQuery) cq; } diff --git a/source/java/org/alfresco/repo/blog/GetBlogPostsCannedQuery.java b/source/java/org/alfresco/repo/blog/GetBlogPostsCannedQuery.java index 26cdbc7c95..48b1c8f781 100644 --- a/source/java/org/alfresco/repo/blog/GetBlogPostsCannedQuery.java +++ b/source/java/org/alfresco/repo/blog/GetBlogPostsCannedQuery.java @@ -18,7 +18,6 @@ */ package org.alfresco.repo.blog; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -55,11 +54,12 @@ public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions getCannedQuery(CannedQueryParameters parameters) { - Method method = null; - for (Method m : methodService.getClass().getMethods()) - { - // note: currently matches first found - if (m.getName().equals(methodName)) - { - method = m; - break; - } - } - - if (method == null) - { - throw new AlfrescoRuntimeException("Method not found: "+methodName); - } - String queryExecutionId = (parameters.getQueryExecutionId() == null ? super.getQueryExecutionId(parameters) : parameters.getQueryExecutionId()); - final GetBlogPostsCannedQuery cq = new GetBlogPostsCannedQuery(rawNodeService, methodSecurityInterceptor, method, parameters, queryExecutionId); + final GetBlogPostsCannedQuery cq = new GetBlogPostsCannedQuery(rawNodeService, methodSecurityInterceptor, methodService, methodName, parameters, queryExecutionId); return (CannedQuery) cq; } diff --git a/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQuery.java b/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQuery.java index dd4443a044..b3b02a98c6 100644 --- a/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQuery.java +++ b/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQuery.java @@ -18,7 +18,6 @@ */ package org.alfresco.repo.blog.cannedqueries; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -58,11 +57,12 @@ public class DraftsAndPublishedBlogPostsCannedQuery extends AbstractCannedQueryP NodeService rawNodeService, TaggingService taggingService, MethodSecurityInterceptor methodSecurityInterceptor, - Method method, + Object methodService, + String methodName, CannedQueryParameters params, String queryExecutionId) { - super(params, queryExecutionId, methodSecurityInterceptor, method); + super(params, queryExecutionId, methodSecurityInterceptor, methodService, methodName); this.rawNodeService = rawNodeService; this.taggingService = taggingService; } diff --git a/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQueryFactory.java b/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQueryFactory.java index bb657fa51f..517ddb59da 100644 --- a/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQueryFactory.java +++ b/source/java/org/alfresco/repo/blog/cannedqueries/DraftsAndPublishedBlogPostsCannedQueryFactory.java @@ -18,12 +18,10 @@ */ package org.alfresco.repo.blog.cannedqueries; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Date; import java.util.List; -import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; import org.alfresco.query.AbstractCannedQueryFactory; import org.alfresco.query.CannedQuery; @@ -89,27 +87,12 @@ public class DraftsAndPublishedBlogPostsCannedQueryFactory extends AbstractCanne @Override public CannedQuery getCannedQuery(CannedQueryParameters parameters) { - Method method = null; - for (Method m : methodService.getClass().getMethods()) - { - // note: currently matches first found - if (m.getName().equals(methodName)) - { - method = m; - break; - } - } - - if (method == null) - { - throw new AlfrescoRuntimeException("Method not found: "+methodName); - } - // if not passed in (TODO or not in future cache) then generate a new query execution id String queryExecutionId = (parameters.getQueryExecutionId() == null ? super.getQueryExecutionId(parameters) : parameters.getQueryExecutionId()); final DraftsAndPublishedBlogPostsCannedQuery cq = new DraftsAndPublishedBlogPostsCannedQuery(rawNodeService, taggingService, - methodSecurityInterceptor, method, parameters, queryExecutionId); + methodSecurityInterceptor, methodService, methodName, + parameters, queryExecutionId); return (CannedQuery) cq; } diff --git a/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQuery.java b/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQuery.java index 203f23b06f..af6e3c2dd5 100644 --- a/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQuery.java +++ b/source/java/org/alfresco/repo/blog/cannedqueries/GetBlogPostsCannedQuery.java @@ -18,7 +18,6 @@ */ package org.alfresco.repo.blog.cannedqueries; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -57,11 +56,12 @@ public class GetBlogPostsCannedQuery extends AbstractCannedQueryPermissions getCannedQuery(CannedQueryParameters parameters) { - Method method = null; - for (Method m : methodService.getClass().getMethods()) - { - // note: currently matches first found - if (m.getName().equals(methodName)) - { - method = m; - break; - } - } - - if (method == null) - { - throw new AlfrescoRuntimeException("Method not found: "+methodName); - } - String queryExecutionId = (parameters.getQueryExecutionId() == null ? super.getQueryExecutionId(parameters) : parameters.getQueryExecutionId()); - final GetBlogPostsCannedQuery cq = new GetBlogPostsCannedQuery(rawNodeService, methodSecurityInterceptor, method, parameters, queryExecutionId); + final GetBlogPostsCannedQuery cq = new GetBlogPostsCannedQuery(rawNodeService, methodSecurityInterceptor, methodService, methodName, parameters, queryExecutionId); return (CannedQuery) cq; } diff --git a/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java b/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java index d7524fd742..8472f5bb87 100644 --- a/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java +++ b/source/java/org/alfresco/repo/node/getchildren/GetChildrenCannedQuery.java @@ -19,7 +19,6 @@ package org.alfresco.repo.node.getchildren; import java.io.Serializable; -import java.lang.reflect.Method; import java.text.Collator; import java.util.ArrayList; import java.util.Collections; @@ -105,11 +104,12 @@ public class GetChildrenCannedQuery extends AbstractCannedQueryPermissions) new GetChildrenCannedQuery(nodeDAO, qnameDAO, cannedQueryDAO, nodePropertyHelper, tenantService, methodSecurityInterceptor, method, parameters, queryExecutionId); + return (CannedQuery) new GetChildrenCannedQuery(nodeDAO, qnameDAO, cannedQueryDAO, nodePropertyHelper, tenantService, methodSecurityInterceptor, methodService, methodName, parameters, queryExecutionId); } /** diff --git a/source/java/org/alfresco/repo/security/authority/GetAuthoritiesCannedQuery.java b/source/java/org/alfresco/repo/security/authority/GetAuthoritiesCannedQuery.java index c42eeab4b2..4a73479661 100644 --- a/source/java/org/alfresco/repo/security/authority/GetAuthoritiesCannedQuery.java +++ b/source/java/org/alfresco/repo/security/authority/GetAuthoritiesCannedQuery.java @@ -18,7 +18,6 @@ */ package org.alfresco.repo.security.authority; -import java.lang.reflect.Method; import java.text.Collator; import java.util.ArrayList; import java.util.Collections; @@ -57,11 +56,12 @@ public class GetAuthoritiesCannedQuery extends AbstractCannedQueryPermissions getCannedQuery(CannedQueryParameters parameters) { - Method method = null; - for (Method m : methodService.getClass().getMethods()) - { - // note: currently matches first found - if (m.getName().equals(methodName)) - { - method = m; - break; - } - } - - if (method == null) - { - throw new AlfrescoRuntimeException("Method not found: "+methodName); - } - // if not passed in (TODO or not in future cache) then generate a new query execution id String queryExecutionId = (parameters.getQueryExecutionId() == null ? super.getQueryExecutionId(parameters) : parameters.getQueryExecutionId()); - return (CannedQuery) new GetAuthoritiesCannedQuery(cannedQueryDAO, tenantService, methodSecurityInterceptor, method, parameters, queryExecutionId); + return (CannedQuery) new GetAuthoritiesCannedQuery(cannedQueryDAO, tenantService, methodSecurityInterceptor, methodService, methodName, parameters, queryExecutionId); } public CannedQuery getCannedQuery(AuthorityType type, NodeRef containerRef, String displayNameFilter, boolean sortByDisplayName, boolean sortAscending, PagingRequest pagingRequest) diff --git a/source/java/org/alfresco/repo/security/permissions/impl/acegi/AbstractCannedQueryPermissions.java b/source/java/org/alfresco/repo/security/permissions/impl/acegi/AbstractCannedQueryPermissions.java index 0f11e33eca..7bbdec5ddc 100644 --- a/source/java/org/alfresco/repo/security/permissions/impl/acegi/AbstractCannedQueryPermissions.java +++ b/source/java/org/alfresco/repo/security/permissions/impl/acegi/AbstractCannedQueryPermissions.java @@ -29,6 +29,7 @@ import net.sf.acegisecurity.context.Context; import net.sf.acegisecurity.context.ContextHolder; import net.sf.acegisecurity.context.security.SecureContext; +import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.query.AbstractCannedQuery; import org.alfresco.query.CannedQueryParameters; import org.alfresco.query.PagingResults; @@ -51,10 +52,26 @@ public abstract class AbstractCannedQueryPermissions extends AbstractCannedQu private MethodSecurityInterceptor methodSecurityInterceptor; private Method method; - protected AbstractCannedQueryPermissions(CannedQueryParameters parameters, String queryExecutionId, MethodSecurityInterceptor methodSecurityInterceptor, Method method) + protected AbstractCannedQueryPermissions(CannedQueryParameters parameters, String queryExecutionId, MethodSecurityInterceptor methodSecurityInterceptor, Object methodService, String methodName) { super(parameters, queryExecutionId); + Method method = null; + for (Method m : methodService.getClass().getMethods()) + { + // note: currently matches first found + if (m.getName().equals(methodName)) + { + method = m; + break; + } + } + + if (method == null) + { + throw new AlfrescoRuntimeException("Method not found: "+methodName); + } + this.methodSecurityInterceptor = methodSecurityInterceptor; this.method = method; }