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
13
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 }