]> git.argeo.org Git - lgpl/argeo-commons.git/blob - jcr/org.argeo.cms.jcr/src/org/argeo/cms/internal/jcr/CustomRepositoryConfigurationParser.java
Admin session to the proper content provider workspace
[lgpl/argeo-commons.git] / jcr / org.argeo.cms.jcr / 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.BeanConfig;
6 import org.apache.jackrabbit.core.config.ConfigurationException;
7 import org.apache.jackrabbit.core.config.RepositoryConfigurationParser;
8 import org.apache.jackrabbit.core.config.WorkspaceSecurityConfig;
9 import org.apache.jackrabbit.core.util.db.ConnectionFactory;
10 import org.w3c.dom.Element;
11
12 /**
13 * A {@link RepositoryConfigurationParser} providing more flexibility with
14 * classloaders.
15 */
16 @SuppressWarnings("restriction")
17 class CustomRepositoryConfigurationParser extends RepositoryConfigurationParser {
18 private ClassLoader classLoader = null;
19
20 public CustomRepositoryConfigurationParser(Properties variables) {
21 super(variables);
22 }
23
24 public CustomRepositoryConfigurationParser(Properties variables, ConnectionFactory connectionFactory) {
25 super(variables, connectionFactory);
26 }
27
28 @Override
29 protected RepositoryConfigurationParser createSubParser(Properties variables) {
30 Properties props = new Properties(getVariables());
31 props.putAll(variables);
32 CustomRepositoryConfigurationParser subParser = new CustomRepositoryConfigurationParser(props,
33 connectionFactory);
34 subParser.setClassLoader(classLoader);
35 return subParser;
36 }
37
38 @Override
39 public WorkspaceSecurityConfig parseWorkspaceSecurityConfig(Element parent) throws ConfigurationException {
40 WorkspaceSecurityConfig workspaceSecurityConfig = super.parseWorkspaceSecurityConfig(parent);
41 workspaceSecurityConfig.getAccessControlProviderConfig().setClassLoader(classLoader);
42 return workspaceSecurityConfig;
43 }
44
45 @Override
46 protected BeanConfig parseBeanConfig(Element parent, String name) throws ConfigurationException {
47 BeanConfig beanConfig = super.parseBeanConfig(parent, name);
48 if (beanConfig.getClassName().startsWith("org.argeo")) {
49 beanConfig.setClassLoader(classLoader);
50 }
51 return beanConfig;
52 }
53
54 public void setClassLoader(ClassLoader classLoader) {
55 this.classLoader = classLoader;
56 }
57
58 }