]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/internal/jcr/CustomRepositoryConfigurationParser.java
Merge branch 'master' of https://mbaudier@code.argeo.org/git/lgpl/argeo-commons.git
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / jcr / CustomRepositoryConfigurationParser.java
1 package org.argeo.cms.internal.jcr;
2
3 import java.util.Properties;
4
5 import org.apache.jackrabbit.core.config.ConfigurationException;
6 import org.apache.jackrabbit.core.config.RepositoryConfigurationParser;
7 import org.apache.jackrabbit.core.config.WorkspaceSecurityConfig;
8 import org.apache.jackrabbit.core.util.db.ConnectionFactory;
9 import org.w3c.dom.Element;
10
11 /**
12 * A {@link RepositoryConfigurationParser} providing more flexibility with
13 * classloaders.
14 */
15 @SuppressWarnings("restriction")
16 class CustomRepositoryConfigurationParser extends RepositoryConfigurationParser {
17 private ClassLoader accessControlProviderClassLoader = null;
18
19 public CustomRepositoryConfigurationParser(Properties variables) {
20 super(variables);
21 }
22
23 public CustomRepositoryConfigurationParser(Properties variables, ConnectionFactory connectionFactory) {
24 super(variables, connectionFactory);
25 }
26
27 @Override
28 protected RepositoryConfigurationParser createSubParser(Properties variables) {
29 Properties props = new Properties(getVariables());
30 props.putAll(variables);
31 CustomRepositoryConfigurationParser subParser = new CustomRepositoryConfigurationParser(props,
32 connectionFactory);
33 subParser.setAccessControlProviderClassLoader(accessControlProviderClassLoader);
34 return subParser;
35 }
36
37 @Override
38 public WorkspaceSecurityConfig parseWorkspaceSecurityConfig(Element parent) throws ConfigurationException {
39 WorkspaceSecurityConfig workspaceSecurityConfig = super.parseWorkspaceSecurityConfig(parent);
40 workspaceSecurityConfig.getAccessControlProviderConfig().setClassLoader(accessControlProviderClassLoader);
41 return workspaceSecurityConfig;
42 }
43
44 public void setAccessControlProviderClassLoader(ClassLoader accessControlProviderClassLoader) {
45 this.accessControlProviderClassLoader = accessControlProviderClassLoader;
46 }
47
48 }