You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2009/02/11 01:01:02 UTC
svn commit: r743173 - in /lenya/trunk:
org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/
org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/
org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/
org.apach...
Author: andreas
Date: Wed Feb 11 00:01:01 2009
New Revision: 743173
URL: http://svn.apache.org/viewvc?rev=743173&view=rev
Log:
Fixed various bean resolving issues.
Modified:
lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java
lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/ComposableAccessControllerResolver.java
lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/AccessControlAction.java
lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/SslRedirectAction.java
lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java
lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-inputModules.xml
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/ac/AccessControllerResolver.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/ac/PolicyUtil.java
lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java
lenya/trunk/org.apache.lenya.core.api/src/test/java/org/apache/lenya/cms/AbstractAccessControlTest.java
lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java
lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseCronJob.java
lenya/trunk/org.apache.lenya.module.contactform/src/main/java/org/apache/lenya/cms/contactform/ContactForm.java
lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java
Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/AbstractAccessControllerResolver.java Wed Feb 11 00:01:01 2009
@@ -107,15 +107,6 @@
protected abstract AccessController doResolveAccessController(String webappUrl)
throws AccessControlException;
- /**
- * @see org.apache.lenya.ac.AccessControllerResolver#release(org.apache.lenya.ac.AccessController)
- */
- public void release(AccessController controller) {
- /*
- * if (controller != null) { getManager().release(controller); }
- */
- }
-
public void setSourceResolver(SourceResolver sourceResolver) {
this.sourceResolver = sourceResolver;
}
Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/ComposableAccessControllerResolver.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/ComposableAccessControllerResolver.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/ComposableAccessControllerResolver.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/ComposableAccessControllerResolver.java Wed Feb 11 00:01:01 2009
@@ -57,15 +57,6 @@
private Map controllerToResolver = new HashMap();
/**
- * @see org.apache.lenya.ac.AccessControllerResolver#release(org.apache.lenya.ac.AccessController)
- */
- public void release(AccessController controller) {
- assert controller != null;
- AccessControllerResolver resolver = getResolver(controller);
- resolver.release(controller);
- }
-
- /**
* Returns the access controller resolver that was used to resolve a specific access controller.
* @param controller The access controller.
* @return An AC resolver.
Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java Wed Feb 11 00:01:01 2009
@@ -29,6 +29,7 @@
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
import org.apache.cocoon.processing.ProcessInfoProvider;
import org.apache.cocoon.spring.configurator.WebAppContextUtils;
+import org.apache.commons.lang.Validate;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
import org.apache.excalibur.source.SourceUtil;
@@ -48,6 +49,7 @@
protected static final String AC_CONFIGURATION_URI = "config/access-control/access-control.xml";
protected static final String TYPE_ATTRIBUTE = "type";
+ protected static final String GLOBAL_CACHE_KEY = "";
private Repository repository;
private SourceResolver sourceResolver;
@@ -68,17 +70,20 @@
*/
protected Object generateCacheKey(String webappUrl, SourceResolver resolver)
throws AccessControlException {
+ Validate.isTrue(webappUrl.startsWith("/"), "Webapp URL must start with a slash.");
URLInformation info = new URLInformation(webappUrl);
String publicationId = info.getPublicationId();
+ String cacheKey = publicationId == null ? GLOBAL_CACHE_KEY : publicationId;
+
if (getLogger().isDebugEnabled()) {
getLogger().debug(
"Using first URL step (might be publication ID) as cache key: ["
+ publicationId + "]");
}
- return super.generateCacheKey(publicationId, resolver);
+ return super.generateCacheKey(cacheKey, resolver);
}
/**
@@ -106,9 +111,10 @@
* @throws AccessControlException when something went wrong.
*/
protected Publication getPublication(String webappUrl) throws AccessControlException {
+ Validate.isTrue(webappUrl.startsWith("/"), "Webapp URL must start with a slash.");
+
Publication publication = null;
- assert webappUrl.startsWith("/");
// remove leading slash
String url = webappUrl.substring(1);
Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/AccessControlAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/AccessControlAction.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/AccessControlAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/AccessControlAction.java Wed Feb 11 00:01:01 2009
@@ -62,13 +62,8 @@
Map result = null;
- getLogger().debug(
- "Resolving AC resolver for type [" + AccessControllerResolver.DEFAULT_RESOLVER
- + "]");
AccessControllerResolver resolver = (AccessControllerResolver) WebAppContextUtils
- .getCurrentWebApplicationContext().getBean(
- AccessControllerResolver.ROLE + "/"
- + AccessControllerResolver.DEFAULT_RESOLVER);
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
getLogger().debug("Resolved AC resolver [" + resolver + "]");
String webappUrl = ServletHelper.getWebappURI(request);
Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/SslRedirectAction.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/SslRedirectAction.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/SslRedirectAction.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/SslRedirectAction.java Wed Feb 11 00:01:01 2009
@@ -63,9 +63,7 @@
if (!request.isSecure()) {
resolver = (AccessControllerResolver) WebAppContextUtils
- .getCurrentWebApplicationContext().getBean(
- AccessControllerResolver.ROLE + "/"
- + AccessControllerResolver.DEFAULT_RESOLVER);
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
String url = ServletHelper.getWebappURI(request);
accessController = resolver.resolveAccessController(url);
Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/AccessControlModule.java Wed Feb 11 00:01:01 2009
@@ -24,16 +24,13 @@
import java.util.Iterator;
import java.util.Map;
+import javax.servlet.http.HttpSession;
+
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.avalon.framework.service.Serviceable;
import org.apache.cocoon.components.modules.input.AbstractInputModule;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
-import org.apache.cocoon.environment.Session;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.AccessController;
import org.apache.lenya.ac.AccessControllerResolver;
@@ -60,10 +57,12 @@
* <li><strong><code>user-id</code></strong> - the ID of the currently logged-in user</li>
* <li><strong><code>user-name</code></strong> - the full name of the currently logged-in user</li>
* <li><strong><code>user-name:{user-id}</code></strong> - the full name of a specific user</li>
- * <li><strong><code>user-email</code></strong> - the e-mail address of the currently logged-in user</li>
+ * <li><strong><code>user-email</code></strong> - the e-mail address of the currently logged-in user
+ * </li>
* <li><strong><code>user-email:{user-id}</code></strong> - the e-mail address of a specific user</li>
* <li><strong><code>ip-address</code></strong> - the IP address of the client machine</li>
- * <li><strong><code>role-ids</code></strong> - the role IDs which are granted to the current identity</li>
+ * <li><strong><code>role-ids</code></strong> - the role IDs which are granted to the current
+ * identity</li>
* <li><strong><code>user-manager</code></strong> - the user manager object</li>
* <li><strong><code>group-manager</code></strong> - the group manager object</li>
* <li><strong><code>iprange-manager</code></strong> - the IP range manager object</li>
@@ -71,7 +70,7 @@
* </ul>
*
*/
-public class AccessControlModule extends AbstractInputModule implements Serviceable {
+public class AccessControlModule extends AbstractInputModule {
/**
* <code>USER_ID</code> The user id
@@ -120,6 +119,8 @@
static final String[] PARAMETER_NAMES = { IP_ADDRESS, USER_ID, USER_NAME, USER_EMAIL, ROLE_IDS,
USER_MANAGER, GROUP_MANAGER, ROLE_MANAGER, IP_RANGE_MANAGER, SSL };
+ private AccessControllerResolver accessControllerResolver;
+
/**
*
* @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
@@ -129,7 +130,7 @@
throws ConfigurationException {
Request request = ObjectModelHelper.getRequest(objectModel);
- Session session = request.getCocoonSession();
+ HttpSession session = request.getSession();
Object value = null;
String[] parameters = attribute.split(":", 2);
@@ -140,7 +141,7 @@
}
Identity identity = null;
-
+
if (session != null) {
identity = (Identity) session.getAttribute(Identity.class.getName());
}
@@ -187,39 +188,20 @@
|| name.equals(IP_RANGE_MANAGER)) {
value = getItemManager(request, name);
}
-
+
if (name.equals(SSL)) {
- ServiceSelector selector = null;
- AccessControllerResolver acResolver = null;
AccessController accessController = null;
try {
- selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
- + "Selector");
- acResolver
- = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);
-
String url = ServletHelper.getWebappURI(request);
- accessController = acResolver.resolveAccessController(url);
+ accessController = this.accessControllerResolver.resolveAccessController(url);
AccreditableManager accreditableManager = accessController.getAccreditableManager();
PolicyManager policyManager = accessController.getPolicyManager();
-
+
Policy policy = policyManager.getPolicy(accreditableManager, url);
value = Boolean.toString(policy.isSSLProtected());
- }
- catch (Exception e) {
+ } catch (Exception e) {
throw new ConfigurationException("Resolving attribute [" + name + "] failed: ", e);
}
- finally {
- if (selector != null) {
- if (acResolver != null) {
- if (accessController != null) {
- acResolver.release(accessController);
- }
- selector.release(acResolver);
- }
- this.manager.release(selector);
- }
- }
}
return value;
@@ -281,23 +263,16 @@
protected ItemManager getItemManager(Request request, String name)
throws ConfigurationException {
AccessController accessController = null;
- ServiceSelector selector = null;
- AccessControllerResolver resolver = null;
ItemManager itemManager = null;
try {
- selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
- + "Selector");
- resolver = (AccessControllerResolver) selector
- .select(AccessControllerResolver.DEFAULT_RESOLVER);
-
String requestURI = request.getRequestURI();
String context = request.getContextPath();
if (context == null) {
context = "";
}
String url = requestURI.substring(context.length());
- accessController = resolver.resolveAccessController(url);
+ accessController = this.accessControllerResolver.resolveAccessController(url);
AccreditableManager accreditableManager = accessController.getAccreditableManager();
@@ -313,28 +288,13 @@
} catch (Exception e) {
throw new ConfigurationException("Obtaining item manager failed: ", e);
- } finally {
- if (selector != null) {
- if (resolver != null) {
- if (accessController != null) {
- resolver.release(accessController);
- }
- selector.release(resolver);
- }
- this.manager.release(selector);
- }
}
return itemManager;
}
- private ServiceManager manager;
-
- /**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager _manager) throws ServiceException {
- this.manager = _manager;
+ public void setAccessControllerResolver(AccessControllerResolver accessControllerResolver) {
+ this.accessControllerResolver = accessControllerResolver;
}
}
Modified: lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-inputModules.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-inputModules.xml?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-inputModules.xml (original)
+++ lenya/trunk/org.apache.lenya.core.ac/src/main/resources/META-INF/cocoon/spring/lenya-core-ac-inputModules.xml Wed Feb 11 00:01:01 2009
@@ -20,5 +20,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean name="org.apache.cocoon.components.modules.input.InputModule/access-control"
- class="org.apache.lenya.cms.cocoon.components.modules.input.AccessControlModule"/>
+ class="org.apache.lenya.cms.cocoon.components.modules.input.AccessControlModule">
+ <property name="accessControllerResolver" ref="org.apache.lenya.ac.AccessControllerResolver"/>
+ </bean>
</beans>
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/ac/AccessControllerResolver.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/ac/AccessControllerResolver.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/ac/AccessControllerResolver.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/ac/AccessControllerResolver.java Wed Feb 11 00:01:01 2009
@@ -32,11 +32,6 @@
* The Avalon role.
*/
String ROLE = AccessControllerResolver.class.getName();
-
- /**
- * The name of the default resolver to use.
- */
- String DEFAULT_RESOLVER = "publication";
/**
* Resolves an access controller for a certain URL.
@@ -46,10 +41,4 @@
*/
AccessController resolveAccessController(String webappUrl) throws AccessControlException;
- /**
- * Releases a resolved access controller.
- * @param controller The access controller to release.
- */
- void release(AccessController controller);
-
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/ac/PolicyUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/ac/PolicyUtil.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/ac/PolicyUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/ac/PolicyUtil.java Wed Feb 11 00:01:01 2009
@@ -48,7 +48,8 @@
* @return A role array.
* @throws AccessControlException If the request does not contain the roles list.
*/
- public static final Role[] getRoles(HttpServletRequest httpServletRequest) throws AccessControlException {
+ public static final Role[] getRoles(HttpServletRequest httpServletRequest)
+ throws AccessControlException {
List roleList = (List) httpServletRequest.getAttribute(Role.class.getName());
if (roleList == null) {
@@ -56,11 +57,12 @@
buf.append(" URI: [" + httpServletRequest.getRequestURI() + "]\n");
for (Enumeration e = httpServletRequest.getParameterNames(); e.hasMoreElements();) {
String key = (String) e.nextElement();
- buf.append(" Parameter: [" + key + "] = [" + httpServletRequest.getParameter(key) + "]\n");
+ buf.append(" Parameter: [" + key + "] = ["
+ + httpServletRequest.getParameter(key) + "]\n");
}
- throw new AccessControlException("Request [" + httpServletRequest + "] does not contain roles: \n"
- + buf.toString());
+ throw new AccessControlException("Request [" + httpServletRequest
+ + "] does not contain roles: \n" + buf.toString());
}
Role[] roles = (Role[]) roleList.toArray(new Role[roleList.size()]);
@@ -86,9 +88,7 @@
protected static AccessController getAccessController(String webappUrl)
throws AccessControlException {
AccessControllerResolver resolver = (AccessControllerResolver) WebAppContextUtils
- .getCurrentWebApplicationContext().getBean(
- AccessControllerResolver.ROLE + "/"
- + AccessControllerResolver.DEFAULT_RESOLVER);
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
AccessController controller = resolver.resolveAccessController(webappUrl);
return controller;
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java Wed Feb 11 00:01:01 2009
@@ -61,16 +61,12 @@
protected AccessControllerResolver getAccessControllerResolver() {
return (AccessControllerResolver) WebAppContextUtils.getCurrentWebApplicationContext()
- .getBean(
- AccessControllerResolver.ROLE + "/"
- + AccessControllerResolver.DEFAULT_RESOLVER);
+ .getBean(AccessControllerResolver.ROLE);
}
/**
* Returns if the condition is complied in a certain situation. The condition is complied when
* the current user has the role that is required by the RoleCondition.
- *
- * @see org.apache.lenya.workflow.impl.AbstractCondition#isComplied(Workflow, Workflowable)
*/
public boolean isComplied(Workflow workflow, Workflowable instance) {
@@ -106,10 +102,6 @@
} catch (final Exception e) {
throw new RuntimeException(e);
- } finally {
- if (accessController != null) {
- acResolver.release(accessController);
- }
}
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/test/java/org/apache/lenya/cms/AbstractAccessControlTest.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/test/java/org/apache/lenya/cms/AbstractAccessControlTest.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/test/java/org/apache/lenya/cms/AbstractAccessControlTest.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/test/java/org/apache/lenya/cms/AbstractAccessControlTest.java Wed Feb 11 00:01:01 2009
@@ -48,7 +48,6 @@
protected static final String TEST_PUB_ID = "test";
private AccessControllerResolver accessControllerResolver;
- private AccessController accessController;
private Repository repository;
protected Session login(String userId) throws AccessControlException {
@@ -122,17 +121,6 @@
return controller;
}
- /**
- * The teardown method for JUnit
- * @exception Exception if an error occurs
- */
- public void tearDown() throws Exception {
- if (this.accessController != null) {
- this.getAccessControllerResolver().release(this.accessController);
- }
- super.tearDown();
- }
-
protected static final String USER_ID = "lenya";
/**
Modified: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java Wed Feb 11 00:01:01 2009
@@ -76,7 +76,7 @@
}
public Identity getIdentity() {
- return ((IdentityWrapper) getRepositorySession()).getIdentity();
+ return ((IdentityWrapper) getRepositorySession().getIdentity()).getIdentity();
}
private UnitOfWork unitOfWork;
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/OutgoingLinkRewriter.java Wed Feb 11 00:01:01 2009
@@ -83,9 +83,7 @@
if (this.considerSslPolicies) {
AccessControllerResolver acResolver = (AccessControllerResolver) WebAppContextUtils
- .getCurrentWebApplicationContext().getBean(
- AccessControllerResolver.ROLE + "/"
- + AccessControllerResolver.DEFAULT_RESOLVER);
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
AccessController accessController = acResolver.resolveAccessController(requestUrl);
if (accessController != null) {
this.accreditableManager = accessController.getAccreditableManager();
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java Wed Feb 11 00:01:01 2009
@@ -26,11 +26,10 @@
import java.util.List;
import java.util.Map;
-import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.cocoon.transformation.AbstractSAXTransformer;
import org.apache.lenya.ac.AccessController;
import org.apache.lenya.ac.AccessControllerResolver;
@@ -53,7 +52,7 @@
* This transformer disables menu items (by removing the href attribute) which are not allowed with
* respect to the usecase policies.
*/
-public class UsecaseMenuTransformer extends AbstractSAXTransformer implements Disposable {
+public class UsecaseMenuTransformer extends AbstractSAXTransformer {
/**
* <code>MENU_ELEMENT</code> The menu element
@@ -71,12 +70,12 @@
* <code>USECASE_ATTRIBUTE</code> The usecase attribute
*/
public static final String USECASE_ATTRIBUTE = "usecase";
-
+
/**
* The value of the <em>checked</em> attribute can either be <em>true</em> or <em>false</em>.
*/
public static final String CHECKED_ATTRIBUTE = "checked";
-
+
/**
* Comment for <code>HREF_ATTRIBUTE</code> The href attribute
*/
@@ -110,9 +109,8 @@
if (getLogger().isDebugEnabled()) {
getLogger().debug("Found usecase [" + usecaseName + "]");
}
- if (!this.authorizer.authorizeUsecase(usecaseName,
- this.roles,
- this.publication)) {
+ if (!this.authorizer
+ .authorizeUsecase(usecaseName, this.roles, this.publication)) {
if (getLogger().isDebugEnabled()) {
getLogger().debug("Usecase not authorized");
}
@@ -139,9 +137,9 @@
}
removeHrefAttribute(attributes);
messages = usecase.getErrorMessages();
- }
- else if (hrefAttribute == null) {
- attributes.addAttribute("", HREF_ATTRIBUTE, HREF_ATTRIBUTE, "CDATA", this.sourceUrl);
+ } else if (hrefAttribute == null) {
+ attributes.addAttribute("", HREF_ATTRIBUTE, HREF_ATTRIBUTE, "CDATA",
+ this.sourceUrl);
}
setItemState(attributes, usecase);
} finally {
@@ -171,7 +169,8 @@
Object itemState = usecase.getParameter(Usecase.PARAMETER_ITEM_STATE);
if (itemState != null && itemState instanceof Boolean) {
Boolean state = (Boolean) itemState;
- attributes.addAttribute("", CHECKED_ATTRIBUTE, CHECKED_ATTRIBUTE, "CDATA", state.toString());
+ attributes.addAttribute("", CHECKED_ATTRIBUTE, CHECKED_ATTRIBUTE, "CDATA", state
+ .toString());
}
}
@@ -197,9 +196,7 @@
if (message.hasParameters()) {
String[] parameters = message.getParameters();
for (int p = 0; p < parameters.length; p++) {
- super.startElement(MENU_NAMESPACE,
- "parameter",
- "parameter",
+ super.startElement(MENU_NAMESPACE, "parameter", "parameter",
new AttributesImpl());
super.characters(parameters[p].toCharArray(), 0, parameters[p].length());
super.endElement(MENU_NAMESPACE, "parameter", "parameter");
@@ -233,7 +230,6 @@
}
private UsecaseAuthorizer authorizer;
- private ServiceSelector serviceSelector = null;
private Role[] roles;
private Publication publication;
private AccessControllerResolver acResolver;
@@ -259,9 +255,8 @@
Session session = this.repository.getSession(this.request);
this.publication = session.getUriHandler().getPublication(webappUrl);
- this.serviceSelector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
- + "Selector");
- this.acResolver = (AccessControllerResolver) this.serviceSelector.select(AccessControllerResolver.DEFAULT_RESOLVER);
+ this.acResolver = (AccessControllerResolver) WebAppContextUtils
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
getLogger().debug("Resolved AC resolver [" + this.acResolver + "]");
AccessController accessController = this.acResolver.resolveAccessController(webappUrl);
@@ -280,24 +275,10 @@
}
- /**
- * @see org.apache.avalon.framework.activity.Disposable#dispose()
- */
- public void dispose() {
- getLogger().debug("Disposing transformer");
- if (this.serviceSelector != null) {
- if (this.acResolver != null) {
- this.serviceSelector.release(this.acResolver);
- }
- this.manager.release(this.serviceSelector);
- }
- }
-
public void recycle() {
super.recycle();
this.publication = null;
this.roles = null;
- this.serviceSelector = null;
this.acResolver = null;
this.authorizer = null;
this.sourceUrl = null;
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java Wed Feb 11 00:01:01 2009
@@ -146,10 +146,8 @@
try {
- AccessControllerResolver acResolver = (AccessControllerResolver) WebAppContextUtils
- .getCurrentWebApplicationContext().getBean(
- AccessControllerResolver.ROLE + "/"
- + AccessControllerResolver.DEFAULT_RESOLVER);
+ AccessControllerResolver acResolver = (AccessControllerResolver) WebAppContextUtils
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
AccessController accessController = acResolver.resolveAccessController(this.webappUrl);
Authorizer[] authorizers = accessController.getAuthorizers();
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java Wed Feb 11 00:01:01 2009
@@ -65,8 +65,7 @@
AccessControllerResolver acResolver = null;
AccessController accessController = null;
WebApplicationContext context = WebAppContextUtils.getCurrentWebApplicationContext();
- acResolver = (AccessControllerResolver) context.getBean(AccessControllerResolver.ROLE + "/"
- + AccessControllerResolver.DEFAULT_RESOLVER);
+ acResolver = (AccessControllerResolver) context.getBean(AccessControllerResolver.ROLE);
accessController = acResolver.resolveAccessController(webappUrl);
ProcessInfoProvider process = (ProcessInfoProvider) context
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseCronJob.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseCronJob.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseCronJob.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/scheduling/impl/UsecaseCronJob.java Wed Feb 11 00:01:01 2009
@@ -27,15 +27,14 @@
import org.apache.avalon.framework.context.Contextualizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.cocoon.components.ContextHelper;
import org.apache.cocoon.components.cron.ConfigurableCronJob;
import org.apache.cocoon.components.cron.ServiceableCronJob;
-import org.apache.cocoon.environment.Environment;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.Session;
import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.AccessController;
import org.apache.lenya.ac.AccessControllerResolver;
@@ -74,7 +73,6 @@
private Context context;
private ProcessInfoProvider processInfoProvider;
-
private Map parameters = new HashMap();
protected static final String USECASE_NAME = "usecaseName";
@@ -88,7 +86,7 @@
public String getUsecaseName() {
return this.usecaseName;
}
-
+
/**
* @return The ID of the user who scheduled the job.
*/
@@ -144,14 +142,11 @@
String key = (String) e.nextElement();
requestParameters.put(key, request.getParameter(key));
}
-/*
- objectModel.put(ObjectModelHelper.REQUEST_OBJECT, new CommandLineRequest(env,
- request.getContextPath(),
- request.getServletPath(),
- getSourceURL(),
- attributes,
- requestParameters));
- */
+ /*
+ * objectModel.put(ObjectModelHelper.REQUEST_OBJECT, new CommandLineRequest(env,
+ * request.getContextPath(), request.getServletPath(), getSourceURL(), attributes,
+ * requestParameters));
+ */
}
/**
@@ -161,56 +156,39 @@
*/
protected void authorizeRequest() throws AccessControlException, ServiceException {
- ServiceSelector selector = null;
- AccessControllerResolver acResolver = null;
- AccessController controller = null;
- try {
- selector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
- + "Selector");
- acResolver = (AccessControllerResolver) selector.select(AccessControllerResolver.DEFAULT_RESOLVER);
- controller = acResolver.resolveAccessController(getSourceURL());
-
- getLogger().debug("Add identity to session");
- getLogger().debug("User ID: [" + this.userId + "]");
- getLogger().debug("Machine: [" + this.machineIp + "]");
-
- Request request = ContextHelper.getRequest(this.context);
- controller.setupIdentity(request);
- Session session = request.getCocoonSession(false);
- Identity identity = (Identity) session.getAttribute(Identity.class.getName());
- Identifiable[] identifiables = identity.getIdentifiables();
- for (int i = 0; i < identifiables.length; i++) {
- identity.removeIdentifiable(identifiables[i]);
- }
+ AccessControllerResolver acResolver = (AccessControllerResolver) WebAppContextUtils
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
+ AccessController controller = acResolver.resolveAccessController(getSourceURL());
+
+ getLogger().debug("Add identity to session");
+ getLogger().debug("User ID: [" + this.userId + "]");
+ getLogger().debug("Machine: [" + this.machineIp + "]");
+
+ Request request = ContextHelper.getRequest(this.context);
+ controller.setupIdentity(request);
+ Session session = request.getCocoonSession(false);
+ Identity identity = (Identity) session.getAttribute(Identity.class.getName());
+ Identifiable[] identifiables = identity.getIdentifiables();
+ for (int i = 0; i < identifiables.length; i++) {
+ identity.removeIdentifiable(identifiables[i]);
+ }
- UserManager userManager = controller.getAccreditableManager().getUserManager();
- if (this.userId != null) {
- User user = userManager.getUser(this.userId);
-
- if (user == null) {
- throw new RuntimeException("User [" + this.userId + "] does not exist!");
- }
+ UserManager userManager = controller.getAccreditableManager().getUserManager();
+ if (this.userId != null) {
+ User user = userManager.getUser(this.userId);
- identity.addIdentifiable(user);
- }
- if (this.machineIp != null) {
- Machine machine = new Machine(this.machineIp);
- identity.addIdentifiable(machine);
+ if (user == null) {
+ throw new RuntimeException("User [" + this.userId + "] does not exist!");
}
- controller.authorize(request);
-
- } finally {
- if (selector != null) {
- if (acResolver != null) {
- if (controller != null) {
- acResolver.release(controller);
- }
- selector.release(acResolver);
- }
- this.manager.release(selector);
- }
+ identity.addIdentifiable(user);
}
+ if (this.machineIp != null) {
+ Machine machine = new Machine(this.machineIp);
+ identity.addIdentifiable(machine);
+ }
+
+ controller.authorize(request);
}
@@ -232,7 +210,7 @@
public void contextualize(Context context) throws ContextException {
this.context = context;
}
-
+
public void setProcessInfoProvider(ProcessInfoProvider provider) {
this.processInfoProvider = provider;
}
Modified: lenya/trunk/org.apache.lenya.module.contactform/src/main/java/org/apache/lenya/cms/contactform/ContactForm.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.contactform/src/main/java/org/apache/lenya/cms/contactform/ContactForm.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.contactform/src/main/java/org/apache/lenya/cms/contactform/ContactForm.java (original)
+++ lenya/trunk/org.apache.lenya.module.contactform/src/main/java/org/apache/lenya/cms/contactform/ContactForm.java Wed Feb 11 00:01:01 2009
@@ -88,9 +88,7 @@
protected User getUser(String userId) throws Exception {
AccessControllerResolver acResolver = (AccessControllerResolver) WebAppContextUtils
- .getCurrentWebApplicationContext().getBean(
- AccessControllerResolver.ROLE + "/"
- + AccessControllerResolver.DEFAULT_RESOLVER);
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
AccessController accessController = acResolver.resolveAccessController(getSourceURL());
UserManager userManager = accessController.getAccreditableManager().getUserManager();
return userManager.getUser(userId);
Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java?rev=743173&r1=743172&r2=743173&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/AccessControlSitetreeTransformer.java Wed Feb 11 00:01:01 2009
@@ -25,14 +25,10 @@
import java.util.Map;
import java.util.Stack;
-import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.cocoon.ProcessingException;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
import org.apache.cocoon.environment.SourceResolver;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.cocoon.transformation.AbstractSAXTransformer;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.AccessController;
@@ -50,14 +46,13 @@
* This transformer is applied to the sitetree. It marks the site element and all node elements the
* current identity is not allowed to access with a <code>protected="true"</code> attribute.
*/
-public class AccessControlSitetreeTransformer extends AbstractSAXTransformer implements Disposable {
+public class AccessControlSitetreeTransformer extends AbstractSAXTransformer {
/**
* <code>ATTRIBUTE_PROTECTED</code> The attribute for protected
*/
public static final String ATTRIBUTE_PROTECTED = "protected";
- private ServiceSelector serviceSelector;
private PolicyManager policyManager;
private AccessControllerResolver acResolver;
private AccreditableManager accreditableManager;
@@ -76,44 +71,21 @@
throws ProcessingException, SAXException, IOException {
super.setup(_resolver, _objectModel, src, par);
- this.serviceSelector = null;
this.acResolver = null;
this.policyManager = null;
this.identity = Identity.getIdentity(this.request.getSession(false));
- try {
-
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Setting up transformer");
- getLogger().debug(" Identity: [" + this.identity + "]");
- }
-
- this.serviceSelector = (ServiceSelector) this.manager
- .lookup(AccessControllerResolver.ROLE + "Selector");
-
- this.acResolver = (AccessControllerResolver) this.serviceSelector
- .select(AccessControllerResolver.DEFAULT_RESOLVER);
-
- if (getLogger().isDebugEnabled()) {
- getLogger().debug(" Resolved AC resolver [" + this.acResolver + "]");
- }
-
- } catch (final ServiceException e) {
- throw new ProcessingException(e);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug("Setting up transformer");
+ getLogger().debug(" Identity: [" + this.identity + "]");
}
- }
+ this.acResolver = (AccessControllerResolver) WebAppContextUtils
+ .getCurrentWebApplicationContext().getBean(AccessControllerResolver.ROLE);
- /**
- * @see org.apache.avalon.framework.activity.Disposable#dispose()
- */
- public void dispose() {
- if (this.serviceSelector != null) {
- if (this.acResolver != null) {
- this.serviceSelector.release(this.acResolver);
- }
- this.manager.release(this.serviceSelector);
+ if (getLogger().isDebugEnabled()) {
+ getLogger().debug(" Resolved AC resolver [" + this.acResolver + "]");
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org