/** * @see AccessControlProviderFactory#createProvider(Session, WorkspaceSecurityConfig) */ public AccessControlProvider createProvider(Session systemSession, WorkspaceSecurityConfig config) throws RepositoryException { String workspaceName = systemSession.getWorkspace().getName(); AccessControlProvider prov; Map props; if (config != null && config.getAccessControlProviderConfig() != null) { BeanConfig bc = config.getAccessControlProviderConfig(); prov = bc.newInstance(AccessControlProvider.class); props = bc.getParameters(); } else { log.debug("No ac-provider configuration for workspace " + workspaceName + " -> using defaults."); if (workspaceName.equals(secWorkspaceName) && !workspaceName.equals(defaultWorkspaceName)) { // UserAccessControlProvider is designed to work with an extra // workspace storing user and groups. therefore avoid returning // this ac provider for the default workspace. prov = new UserAccessControlProvider(); } else { prov = new ACLProvider(); } log.debug("Default provider for workspace " + workspaceName + " = " + prov.getClass().getName()); props = Collections.emptyMap(); } prov.init(systemSession, props); return prov; } }
/** * @see AccessControlProviderFactory#createProvider(Session, WorkspaceSecurityConfig) */ public AccessControlProvider createProvider(Session systemSession, WorkspaceSecurityConfig config) throws RepositoryException { String workspaceName = systemSession.getWorkspace().getName(); AccessControlProvider prov; Map props; if (config != null && config.getAccessControlProviderConfig() != null) { BeanConfig bc = config.getAccessControlProviderConfig(); prov = bc.newInstance(AccessControlProvider.class); props = bc.getParameters(); } else { log.debug("No ac-provider configuration for workspace " + workspaceName + " -> using defaults."); if (workspaceName.equals(secWorkspaceName) && !workspaceName.equals(defaultWorkspaceName)) { // UserAccessControlProvider is designed to work with an extra // workspace storing user and groups. therefore avoid returning // this ac provider for the default workspace. prov = new UserAccessControlProvider(); } else { prov = new ACLProvider(); } log.debug("Default provider for workspace " + workspaceName + " = " + prov.getClass().getName()); props = Collections.emptyMap(); } prov.init(systemSession, props); return prov; } }
/** * Test that a standard workspace configuration file is * correctly parsed. * * @throws Exception on errors */ public void testWorkspaceXml() throws Exception { InputStream xml = getClass().getClassLoader().getResourceAsStream( "org/apache/jackrabbit/core/config/workspace.xml"); WorkspaceConfig config = parser.parseWorkspaceConfig(new InputSource(xml)); assertEquals("target", config.getHomeDir()); assertEquals("default", config.getName()); PersistenceManagerConfig pmc = config.getPersistenceManagerConfig(); assertEquals( "org.apache.jackrabbit.core.persistence.obj.ObjectPersistenceManager", pmc.getClassName()); assertTrue(pmc.getParameters().isEmpty()); assertTrue(config.isSearchEnabled()); WorkspaceSecurityConfig ws = config.getSecurityConfig(); if (ws != null) { BeanConfig ppfConfig = ws.getAccessControlProviderConfig(); if (ppfConfig != null) { ppfConfig.newInstance(AccessControlProvider.class); } } }