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 2007/01/25 14:33:40 UTC
svn commit: r499783 - in /lenya/trunk/src: impl/java/org/apache/lenya/
java/org/apache/lenya/ac/ modules-core/ac/config/cocoon-xconf/
modules-core/ac/java/src/org/apache/lenya/ac/file/
modules-core/ac/java/src/org/apache/lenya/ac/impl/
Author: andreas
Date: Thu Jan 25 05:33:38 2007
New Revision: 499783
URL: http://svn.apache.org/viewvc?view=rev&rev=499783
Log:
Introduced AccreditableManagerFactory to clean up the AM setup mechanism
Added:
lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManagerFactory.java
lenya/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-manager-factory.xconf
lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java
Removed:
lenya/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-managers.xconf
Modified:
lenya/trunk/src/impl/java/org/apache/lenya/lenya.roles
lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java
lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccreditableManager.java
lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java
lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java
Modified: lenya/trunk/src/impl/java/org/apache/lenya/lenya.roles
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/lenya.roles?view=diff&rev=499783&r1=499782&r2=499783
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/lenya.roles (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/lenya.roles Thu Jan 25 05:33:38 2007
@@ -58,12 +58,6 @@
<role-list>
- <role name="org.apache.lenya.ac.AccreditableManagerSelector"
- shorthand="accreditable-managers"
- default-class="org.apache.cocoon.components.ExtendedComponentSelector">
- <hint shorthand="file" class="org.apache.lenya.ac.file.FileAccreditableManager"/>
- </role>
-
<role name="org.apache.lenya.ac.AuthorizerSelector"
shorthand="authorizers"
default-class="org.apache.cocoon.components.ExtendedComponentSelector">
Added: lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManagerFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManagerFactory.java?view=auto&rev=499783
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManagerFactory.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManagerFactory.java Thu Jan 25 05:33:38 2007
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ *
+ */
+package org.apache.lenya.ac;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+
+/**
+ * Factory to produce accreditable managers.
+ */
+public interface AccreditableManagerFactory {
+
+ /**
+ * The Avalon service role.
+ */
+ String ROLE = AccreditableManagerFactory.class.getName();
+
+ /**
+ * @param config The configuration.
+ * @return An accreditable manager for a certain configuration.
+ * @throws ConfigurationException if the configuration failed.
+ */
+ AccreditableManager getAccreditableManager(Configuration config) throws ConfigurationException;
+
+}
Added: lenya/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-manager-factory.xconf
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-manager-factory.xconf?view=auto&rev=499783
==============================================================================
--- lenya/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-manager-factory.xconf (added)
+++ lenya/trunk/src/modules-core/ac/config/cocoon-xconf/accreditable-manager-factory.xconf Thu Jan 25 05:33:38 2007
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- $Id: usecases-workflow-deactivate.xconf 348547 2005-11-23 20:13:01Z chestnut $ -->
+<!--
+ This file defines the publication specific use-cases
+-->
+
+ <xconf xpath="/cocoon" unless="/cocoon/component[@role = 'org.apache.lenya.ac.AccreditableManagerFactory']">
+ <component logger="lenya.ac.accreditablemanager"
+ role="org.apache.lenya.ac.AccreditableManagerFactory"
+ class="org.apache.lenya.ac.file.FileAccreditableManagerFactory"/>
+ </xconf>
Modified: lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java?view=diff&rev=499783&r1=499782&r2=499783
==============================================================================
--- lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java (original)
+++ lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java Thu Jan 25 05:33:38 2007
@@ -27,15 +27,8 @@
import java.util.HashSet;
import java.util.Set;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.parameters.ParameterException;
-import org.apache.avalon.framework.parameters.Parameterizable;
-import org.apache.avalon.framework.parameters.Parameters;
-import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
import org.apache.cocoon.util.NetUtils;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceResolver;
@@ -51,27 +44,27 @@
/**
* File-based accreditable manager.
*/
-public class FileAccreditableManager extends AbstractAccreditableManager implements Serviceable,
- Configurable, Parameterizable {
+public class FileAccreditableManager extends AbstractAccreditableManager {
- /**
- * Creates a new FileAccreditableManager. If you use this constructor, you have to set the
- * configuration directory either by calling {@link #setConfigurationDirectory(File)} or by
- * calling {@link #parameterize(Parameters)}.
- */
- public FileAccreditableManager() {
- // do nothing
- }
+ private ServiceManager manager;
/**
* Creates a new FileAccessController based on a configuration directory.
- * @param _configurationDirectory The configuration directory.
+ * @param manager The service manager.
+ * @param logger The logger.
+ * @param configurationUri The configuration directory URI.
* @param _userTypes The supported user types.
*/
- public FileAccreditableManager(File _configurationDirectory, UserType[] _userTypes) {
- Assert.notNull("configuration directory", _configurationDirectory);
- Assert.isTrue("configuration directory exists", _configurationDirectory.isDirectory());
- this.configurationDirectory = _configurationDirectory;
+ public FileAccreditableManager(ServiceManager manager, Logger logger,
+ String configurationUri, UserType[] _userTypes) {
+ super(logger);
+
+ Assert.notNull("service manager", manager);
+ this.manager = manager;
+
+ Assert.notNull("configuration directory", configurationUri);
+ this.configurationDirectoryUri = configurationUri;
+
this.userTypes = new HashSet(Arrays.asList(_userTypes));
}
@@ -98,7 +91,7 @@
if (this.configurationDirectory == null) {
- if (this.configurationDirectoryPath == null) {
+ if (this.configurationDirectoryUri == null) {
throw new AccessControlException("Configuration directory not set!");
}
@@ -108,10 +101,10 @@
try {
getLogger().debug(
- "Configuration directory Path: [" + this.configurationDirectoryPath + "]");
+ "Configuration directory Path: [" + this.configurationDirectoryUri + "]");
resolver = (SourceResolver) getManager().lookup(SourceResolver.ROLE);
- source = resolver.resolveURI(this.configurationDirectoryPath);
+ source = resolver.resolveURI(this.configurationDirectoryUri);
getLogger().debug("Configuration directory URI: " + source.getURI());
directory = new File(new URI(NetUtils.encodePath(source.getURI())));
@@ -125,65 +118,18 @@
getManager().release(resolver);
}
}
- setConfigurationDirectory(directory);
+ this.configurationDirectory = directory;
}
return this.configurationDirectory;
}
- protected static final String DIRECTORY = "directory";
-
- /**
- * @see org.apache.avalon.framework.parameters.Parameterizable#parameterize(org.apache.avalon.framework.parameters.Parameters)
- */
- public void parameterize(Parameters parameters) throws ParameterException {
- if (parameters.isParameter(DIRECTORY)) {
- this.configurationDirectoryPath = parameters.getParameter(DIRECTORY);
- getLogger().debug("Configuration directory: [" + this.configurationDirectoryPath + "]");
- }
- }
-
- protected static final String A_M_TAG = "accreditable-manager";
- protected static final String U_M_CHILD_TAG = "user-manager";
- protected static final String U_T_CHILD_TAG = "user-type";
- protected static final String U_T_CLASS_ATTRIBUTE = "class";
- protected static final String U_T_CREATE_ATTRIBUTE = "create-use-case";
// provided for backward compatibility
protected static final String DEFAULT_USER_TYPE_CLASS = FileUser.class.getName();
protected static final String DEFAULT_USER_TYPE_KEY = "Local User";
protected static final String DEFAULT_USER_CREATE_USE_CASE = "userAddUser";
/**
- * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
- * added to read new user-manager block within accreditable-manager
- */
- public void configure(Configuration configuration) throws ConfigurationException {
- if (A_M_TAG.equals(configuration.getName())) {
- this.userTypes = new HashSet();
- Configuration umConf = configuration.getChild(U_M_CHILD_TAG, false);
- if (umConf != null) {
- Configuration[] typeConfs = umConf.getChildren();
- for (int i = 0; i < typeConfs.length; i++) {
- this.userTypes.add(new UserType(typeConfs[i].getValue(), typeConfs[i]
- .getAttribute(U_T_CLASS_ATTRIBUTE), typeConfs[i]
- .getAttribute(U_T_CREATE_ATTRIBUTE)));
- }
- } else {
- getLogger().debug(
- "FileAccreditableManager: using default configuration for user types");
- // no "user-manager" block in access control: provide
- // a default for backward compatibility
- this.userTypes.add(getDefaultUserType());
- }
- // maybe TODO (or is it overkill?) : validate the parametrized user
- // types, for example, check if the classes are in the classpath ?
- } else {
- // TODO: In most cases it doesn't seem to find this element ...
- //throw new ConfigurationException("No such element: " + A_M_TAG);
- }
- }
-
- /**
* Returns the default user type.
* @return A user type.
*/
@@ -192,31 +138,7 @@
DEFAULT_USER_CREATE_USE_CASE);
}
- private String configurationDirectoryPath;
-
- /**
- * Sets the configuration directory.
- * @param file The configuration directory.
- * @throws AccessControlException if an error occurs
- */
- public void setConfigurationDirectory(File file) throws AccessControlException {
- if (file == null || !file.isDirectory()) {
- throw new AccessControlException("Configuration directory [" + file
- + "] does not exist!");
- }
- this.configurationDirectory = file;
- }
-
- private ServiceManager manager;
-
- /**
- * Set the global component manager.
- * @param _manager The global component manager
- * @throws ServiceException when something went wrong.
- */
- public void service(ServiceManager _manager) throws ServiceException {
- this.manager = _manager;
- }
+ private String configurationDirectoryUri;
/**
* Returns the service manager.
@@ -230,7 +152,8 @@
* @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeGroupManager()
*/
protected GroupManager initializeGroupManager() throws AccessControlException {
- FileGroupManager _manager = FileGroupManager.instance(this, getConfigurationDirectory(), getLogger());
+ FileGroupManager _manager = FileGroupManager.instance(this, getConfigurationDirectory(),
+ getLogger());
return _manager;
}
@@ -238,7 +161,8 @@
* @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeIPRangeManager()
*/
protected IPRangeManager initializeIPRangeManager() throws AccessControlException {
- FileIPRangeManager _manager = FileIPRangeManager.instance(this, getConfigurationDirectory(), getLogger());
+ FileIPRangeManager _manager = FileIPRangeManager.instance(this,
+ getConfigurationDirectory(), getLogger());
return _manager;
}
@@ -246,7 +170,8 @@
* @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeRoleManager()
*/
protected RoleManager initializeRoleManager() throws AccessControlException {
- FileRoleManager _manager = FileRoleManager.instance(this, getConfigurationDirectory(), getLogger());
+ FileRoleManager _manager = FileRoleManager.instance(this, getConfigurationDirectory(),
+ getLogger());
return _manager;
}
@@ -269,6 +194,7 @@
public String getId() {
try {
+ Assert.notNull("configuration directory", this.configurationDirectory);
return this.configurationDirectory.getCanonicalPath();
} catch (IOException e) {
throw new RuntimeException(e);
Added: lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java?view=auto&rev=499783
==============================================================================
--- lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java (added)
+++ lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/file/FileAccreditableManagerFactory.java Thu Jan 25 05:33:38 2007
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.lenya.ac.file;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.thread.ThreadSafe;
+import org.apache.lenya.ac.AccreditableManager;
+import org.apache.lenya.ac.AccreditableManagerFactory;
+import org.apache.lenya.ac.UserType;
+
+/**
+ * Factory for file-based accreditable managers.
+ */
+public class FileAccreditableManagerFactory extends AbstractLogEnabled implements
+ AccreditableManagerFactory, ThreadSafe, Serviceable {
+
+ private Map id2manager = new HashMap();
+
+ protected static final String U_M_CHILD_TAG = "user-manager";
+ protected static final String U_T_CHILD_TAG = "user-type";
+ protected static final String U_T_CLASS_ATTRIBUTE = "class";
+ protected static final String U_T_CREATE_ATTRIBUTE = "create-use-case";
+
+ public AccreditableManager getAccreditableManager(Configuration config)
+ throws ConfigurationException {
+
+ try {
+ String configUri = null;
+ Configuration[] paramConfigs = config.getChildren("parameter");
+ for (int i = 0; i < paramConfigs.length; i++) {
+ if (paramConfigs[i].getAttribute("name").equals("directory")) {
+ configUri = paramConfigs[i].getAttribute("value");
+ }
+ }
+
+ if (configUri == null) {
+ throw new RuntimeException("No <parameter name=\"directory\"> element found!");
+ }
+
+ if (this.id2manager.containsKey(configUri)) {
+ return (AccreditableManager) this.id2manager.get(configUri);
+ } else {
+ Set userTypes = new HashSet();
+ Configuration umConf = config.getChild(U_M_CHILD_TAG, false);
+ if (umConf != null) {
+ Configuration[] typeConfs = umConf.getChildren();
+ for (int i = 0; i < typeConfs.length; i++) {
+ userTypes.add(new UserType(typeConfs[i].getValue(), typeConfs[i]
+ .getAttribute(U_T_CLASS_ATTRIBUTE), typeConfs[i]
+ .getAttribute(U_T_CREATE_ATTRIBUTE)));
+ }
+ } else {
+ getLogger().debug(
+ "FileAccreditableManager: using default configuration for user types");
+ // no "user-manager" block in access control: provide
+ // a default for backward compatibility
+ userTypes.add(FileAccreditableManager.getDefaultUserType());
+ }
+ UserType[] types = (UserType[]) userTypes.toArray(new UserType[userTypes.size()]);
+ AccreditableManager mgr = new FileAccreditableManager(this.manager, getLogger(),
+ configUri, types);
+ this.id2manager.put(configUri, mgr);
+ return mgr;
+ }
+
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected ServiceManager manager;
+
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ }
+
+}
Modified: lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccreditableManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccreditableManager.java?view=diff&rev=499783&r1=499782&r2=499783
==============================================================================
--- lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccreditableManager.java (original)
+++ lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractAccreditableManager.java Thu Jan 25 05:33:38 2007
@@ -24,8 +24,9 @@
import java.util.Iterator;
import java.util.List;
-import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.logger.AbstractLogEnabled;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.GroupManager;
@@ -40,7 +41,14 @@
*/
public abstract class AbstractAccreditableManager
extends AbstractLogEnabled
- implements AccreditableManager, ItemManagerListener, Disposable {
+ implements AccreditableManager, ItemManagerListener {
+
+ /**
+ * @param logger The logger.
+ */
+ public AbstractAccreditableManager(Logger logger) {
+ ContainerUtil.enableLogging(this, logger);
+ }
private UserManager userManager = null;
private GroupManager groupManager = null;
@@ -120,28 +128,6 @@
getLogger().debug("Item was removed: [" + item + "] - notifying listeners");
}
notifyRemoved(item);
- }
-
- /**
- * @see org.apache.avalon.framework.activity.Disposable#dispose()
- */
- public void dispose() {
- if (this.userManager != null) {
- this.userManager.removeItemManagerListener(this);
- }
- if (this.groupManager != null) {
- this.groupManager.removeItemManagerListener(this);
- }
- if (this.ipRangeManager != null) {
- this.ipRangeManager.removeItemManagerListener(this);
- }
- if (this.roleManager != null) {
- this.roleManager.removeItemManagerListener(this);
- }
-
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("Disposing [" + this + "]");
- }
}
/**
Modified: lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java?view=diff&rev=499783&r1=499782&r2=499783
==============================================================================
--- lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java (original)
+++ lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java Thu Jan 25 05:33:38 2007
@@ -24,7 +24,6 @@
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.Accreditable;
-import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.Group;
import org.apache.lenya.ac.Groupable;
import org.apache.lenya.ac.ItemManager;
Modified: lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java?view=diff&rev=499783&r1=499782&r2=499783
==============================================================================
--- lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java (original)
+++ lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java Thu Jan 25 05:33:38 2007
@@ -43,6 +43,7 @@
import org.apache.lenya.ac.AccessController;
import org.apache.lenya.ac.Accreditable;
import org.apache.lenya.ac.AccreditableManager;
+import org.apache.lenya.ac.AccreditableManagerFactory;
import org.apache.lenya.ac.Authenticator;
import org.apache.lenya.ac.Authorizer;
import org.apache.lenya.ac.IPRange;
@@ -181,22 +182,19 @@
*/
protected void setupAccreditableManager(Configuration configuration)
throws ConfigurationException, ServiceException, ParameterException {
-
- Configuration accreditableManagerConfiguration = configuration.getChild(
- ACCREDITABLE_MANAGER_ELEMENT, false);
- if (accreditableManagerConfiguration != null) {
- String accreditableManagerType = accreditableManagerConfiguration
- .getAttribute(TYPE_ATTRIBUTE);
- if (getLogger().isDebugEnabled()) {
- getLogger().debug("AccreditableManager type: [" + accreditableManagerType + "]");
+ Configuration config = configuration.getChild(ACCREDITABLE_MANAGER_ELEMENT, false);
+ if (config != null) {
+ AccreditableManagerFactory factory = null;
+ try {
+ factory = (AccreditableManagerFactory) this.manager.lookup(AccreditableManagerFactory.ROLE);
+ this.accreditableManager = factory.getAccreditableManager(config);
+ this.accreditableManager.addItemManagerListener(this);
+ }
+ finally {
+ if (factory != null) {
+ this.manager.release(factory);
+ }
}
-
- this.accreditableManagerSelector = (ServiceSelector) this.manager.lookup(AccreditableManager.ROLE
- + "Selector");
- this.accreditableManager = (AccreditableManager) this.accreditableManagerSelector
- .select(accreditableManagerType);
- this.accreditableManager.addItemManagerListener(this);
- configureOrParameterize(this.accreditableManager, accreditableManagerConfiguration);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org