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 2006/12/11 18:41:28 UTC
svn commit: r485769 [1/3] - in /lenya/trunk/src:
impl/test/org/apache/lenya/cms/publication/
impl/test/org/apache/lenya/transaction/ java/org/apache/lenya/ac/
java/org/apache/lenya/cms/observation/
java/org/apache/lenya/cms/repository/ java/org/apache/...
Author: andreas
Date: Mon Dec 11 09:41:23 2006
New Revision: 485769
URL: http://svn.apache.org/viewvc?view=rev&rev=485769
Log:
Refactored notification mechanism (more generic now), notify listeners after transactions are completed, added basic inbox functionality (mainly to simplify notification unit testing)
Added:
lenya/trunk/src/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowEventDescriptor.java
lenya/trunk/src/modules-core/workflow-impl/java/src/org/apache/lenya/cms/workflow/WorkflowNotifier.java
lenya/trunk/src/modules/notification/config/cocoon-xconf/inboxmanager.xconf
lenya/trunk/src/modules/notification/config/cocoon-xconf/notificationlistener.xconf
lenya/trunk/src/modules/notification/config/cocoon-xconf/tab.xconf
lenya/trunk/src/modules/notification/config/cocoon-xconf/usecase-inbox.xconf
lenya/trunk/src/modules/notification/config/cocoon-xconf/usecase-sendMessage.xconf
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/AbstractInboxManager.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/Inbox.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxManager.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/InboxNotifier.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/Inbox.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/usecases/SendMessage.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInbox.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/inbox/xml/XmlSourceInboxManager.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationEventDescriptor.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationListener.java
lenya/trunk/src/modules/notification/java/test/
lenya/trunk/src/modules/notification/java/test/org/
lenya/trunk/src/modules/notification/java/test/org/apache/
lenya/trunk/src/modules/notification/java/test/org/apache/lenya/
lenya/trunk/src/modules/notification/java/test/org/apache/lenya/notification/
lenya/trunk/src/modules/notification/java/test/org/apache/lenya/notification/NotificationTest.java
lenya/trunk/src/modules/notification/resources/
lenya/trunk/src/modules/notification/resources/i18n/
lenya/trunk/src/modules/notification/resources/i18n/cmsui.xml
lenya/trunk/src/modules/notification/resources/i18n/cmsui_de.xml
lenya/trunk/src/modules/notification/usecases/currentMessage.jx
lenya/trunk/src/modules/notification/usecases/inbox.jx
lenya/trunk/src/modules/notification/usecases/messageList.jx
lenya/trunk/src/modules/notification/usecases/sendMessage.jx
Removed:
lenya/trunk/src/java/org/apache/lenya/cms/repository/NodeListener.java
Modified:
lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java
lenya/trunk/src/impl/test/org/apache/lenya/transaction/MockUser.java
lenya/trunk/src/java/org/apache/lenya/ac/Accreditable.java
lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManager.java
lenya/trunk/src/java/org/apache/lenya/ac/Item.java
lenya/trunk/src/java/org/apache/lenya/ac/ItemManager.java
lenya/trunk/src/java/org/apache/lenya/ac/User.java
lenya/trunk/src/java/org/apache/lenya/cms/observation/DocumentEvent.java
lenya/trunk/src/java/org/apache/lenya/cms/observation/ObservationRegistry.java
lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEvent.java
lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryListener.java
lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java
lenya/trunk/src/java/org/apache/lenya/cms/repository/Session.java
lenya/trunk/src/java/org/apache/lenya/cms/repository/SessionImpl.java
lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/cifs/CIFSUser.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroup.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroupManager.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRange.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRangeManager.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileItemManager.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRole.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRoleManager.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUser.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUserManager.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroup.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractItem.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractRole.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractUser.java
lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/DefaultAccessController.java
lenya/trunk/src/modules-core/ac-impl/java/test/org/apache/lenya/ac/file/FileGroupTest.java
lenya/trunk/src/modules-core/ac-impl/java/test/org/apache/lenya/ac/file/FileRoleTest.java
lenya/trunk/src/modules-core/ac-impl/java/test/org/apache/lenya/ac/file/FileUserTest.java
lenya/trunk/src/modules-core/ac-impl/java/test/org/apache/lenya/ac/impl/GroupManagerTest.java
lenya/trunk/src/modules-core/ac-impl/java/test/org/apache/lenya/ac/impl/RoleManagerTest.java
lenya/trunk/src/modules-core/ac-impl/java/test/org/apache/lenya/ac/impl/UserManagerTest.java
lenya/trunk/src/modules-core/administration/java/src/org/apache/lenya/cms/ac/usecases/AddUser.java
lenya/trunk/src/modules-core/janitor/java/src/org/apache/lenya/cms/janitor/ContentJanitor.java
lenya/trunk/src/modules-core/ldap/java/src/org/apache/lenya/ac/ldap/LDAPUser.java
lenya/trunk/src/modules-core/ldap/java/test/org/apache/lenya/ac/ldap/AbstractLDAPUserTest.java
lenya/trunk/src/modules-core/observation-impl/java/src/org/apache/lenya/cms/observation/ObservationManager.java
lenya/trunk/src/modules-core/observation-impl/java/test/org/apache/lenya/cms/observation/TestListener.java
lenya/trunk/src/modules/contactform/java/src/org/apache/lenya/cms/contactform/ContactForm.java
lenya/trunk/src/modules/export/java/src/org/apache/lenya/cms/export/Importer.java
lenya/trunk/src/modules/lucene/java/src/org/apache/lenya/cms/lucene/IndexUpdaterImpl.java
lenya/trunk/src/modules/notification/config/cocoon-xconf/notifier.xconf
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/notification/AbstractNotifier.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/notification/EmailNotifier.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/notification/Message.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/notification/NotificationUtil.java
lenya/trunk/src/modules/notification/java/src/org/apache/lenya/notification/Notifier.java
lenya/trunk/src/modules/notification/module.xml
lenya/trunk/src/modules/repository/java/src/org/apache/lenya/cms/repo/adapter/RepoNode.java
lenya/trunk/src/modules/sourcerepository/java/src/org/apache/lenya/cms/repository/SourceNode.java
lenya/trunk/src/pubs/default/config/ac/usecase-policies.xml
lenya/trunk/src/pubs/default/config/publication.xconf
lenya/trunk/src/pubs/default/modules/defaultusecases/java/src/org/apache/lenya/defaultpub/cms/usecases/Publish.java
lenya/trunk/src/webapp/lenya/resources/css/tables.css
Modified: lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java (original)
+++ lenya/trunk/src/impl/test/org/apache/lenya/cms/publication/DublinCoreTest.java Mon Dec 11 09:41:23 2006
@@ -35,7 +35,6 @@
private static final String AREA = "authoring";
private static final String PATH = "/tutorial";
private static final String LANGUAGE = "de";
- private static final String CREATOR = "test";
/**
* Test the fetching, modification and refetching of a dc core object.
@@ -52,7 +51,6 @@
Publication publication = getPublication("test");
- DocumentFactory map = getFactory();
Document doc = publication.getArea(AREA).getSite().getNode(PATH).getLink(LANGUAGE).getDocument();
doc.getRepositoryNode().lock();
@@ -61,8 +59,13 @@
String title = dcCore.getFirstValue(DublinCore.ELEMENT_TITLE);
String subject = dcCore.getFirstValue(DublinCore.ELEMENT_SUBJECT);
String creator = dcCore.getFirstValue(DublinCore.ELEMENT_CREATOR);
+
+ if (creator == null) {
+ creator = "test";
+ }
- dcCore.setValue(DublinCore.ELEMENT_CREATOR, CREATOR);
+ String newCreator = creator + "-test";
+ dcCore.setValue(DublinCore.ELEMENT_CREATOR, newCreator);
Document doc2 = publication.getArea(AREA).getSite().getNode(PATH).getLink(LANGUAGE).getDocument();
@@ -70,7 +73,7 @@
assertEquals(title, dcCore2.getFirstValue(DublinCore.ELEMENT_TITLE));
assertEquals(subject, dcCore2.getFirstValue(DublinCore.ELEMENT_SUBJECT));
assertFalse(creator.equals(dcCore2.getFirstValue(DublinCore.ELEMENT_CREATOR)));
- assertEquals(CREATOR, dcCore2.getFirstValue(DublinCore.ELEMENT_CREATOR));
+ assertEquals(newCreator, dcCore2.getFirstValue(DublinCore.ELEMENT_CREATOR));
doc.getRepositoryNode().unlock();
}
Modified: lenya/trunk/src/impl/test/org/apache/lenya/transaction/MockUser.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/test/org/apache/lenya/transaction/MockUser.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/impl/test/org/apache/lenya/transaction/MockUser.java (original)
+++ lenya/trunk/src/impl/test/org/apache/lenya/transaction/MockUser.java Mon Dec 11 09:41:23 2006
@@ -24,7 +24,9 @@
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.Accreditable;
+import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.Group;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.User;
public class MockUser implements User {
@@ -147,6 +149,16 @@
public void removedFromGroup(Group group) {
// TODO Auto-generated method stub
+ }
+
+ public AccreditableManager getAccreditableManager() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public ItemManager getItemManager() {
+ // TODO Auto-generated method stub
+ return null;
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/ac/Accreditable.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/ac/Accreditable.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/ac/Accreditable.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/ac/Accreditable.java Mon Dec 11 09:41:23 2006
@@ -32,4 +32,5 @@
* @return An array of accreditables.
*/
Accreditable[] getAccreditables();
+
}
Modified: lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManager.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/ac/AccreditableManager.java Mon Dec 11 09:41:23 2006
@@ -71,5 +71,11 @@
* @param listener An item manager listener.
*/
void removeItemManagerListener(ItemManagerListener listener);
+
+ /**
+ * @return A source URI to store configuration sources. This URI
+ * must point to a collection.
+ */
+ String getConfigurationCollectionUri();
}
Modified: lenya/trunk/src/java/org/apache/lenya/ac/Item.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/ac/Item.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/ac/Item.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/ac/Item.java Mon Dec 11 09:41:23 2006
@@ -63,16 +63,15 @@
void setDescription(String description);
/**
- * Sets the configuration directory of this item.
- * @param configurationDirectory The configuration directory.
- */
- void setConfigurationDirectory(File configurationDirectory);
-
- /**
* Configures this item.
* @param configuration The configuration.
* @throws ConfigurationException when something went wrong.
*/
void configure(Configuration configuration) throws ConfigurationException;
+ /**
+ * @return The item manager this item belongs to.
+ */
+ ItemManager getItemManager();
+
}
Modified: lenya/trunk/src/java/org/apache/lenya/ac/ItemManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/ac/ItemManager.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/ac/ItemManager.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/ac/ItemManager.java Mon Dec 11 09:41:23 2006
@@ -35,5 +35,10 @@
* @param listener The listener to remove.
*/
void removeItemManagerListener(ItemManagerListener listener);
+
+ /**
+ * @return The accreditable manager this item manager belongs to.
+ */
+ AccreditableManager getAccreditableManager();
}
Modified: lenya/trunk/src/java/org/apache/lenya/ac/User.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/ac/User.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/ac/User.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/ac/User.java Mon Dec 11 09:41:23 2006
@@ -112,4 +112,8 @@
*/
boolean authenticate(String password);
+ /**
+ * @return The accreditable manager this accreditable belongs to.
+ */
+ AccreditableManager getAccreditableManager();
}
Added: lenya/trunk/src/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java?view=auto&rev=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/cms/observation/AbstractRepositoryListener.java Mon Dec 11 09:41:23 2006
@@ -0,0 +1,55 @@
+/*
+ * 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.cms.observation;
+
+import org.apache.avalon.framework.activity.Startable;
+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;
+
+/**
+ * Abstract repository listener implementation which registeres with the observation
+ * registry at startup.
+ */
+public abstract class AbstractRepositoryListener extends AbstractLogEnabled implements Serviceable,
+ Startable, ThreadSafe, RepositoryListener {
+
+ public void start() throws Exception {
+ ObservationRegistry registry = null;
+ try {
+ registry = (ObservationRegistry) this.manager.lookup(ObservationRegistry.ROLE);
+ registry.registerListener(this);
+ } finally {
+ if (registry != null) {
+ this.manager.release(registry);
+ }
+ }
+ }
+
+ public void stop() throws Exception {
+ }
+
+ protected ServiceManager manager;
+
+ public void service(ServiceManager manager) throws ServiceException {
+ this.manager = manager;
+ }
+
+}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/observation/DocumentEvent.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/observation/DocumentEvent.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/observation/DocumentEvent.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/observation/DocumentEvent.java Mon Dec 11 09:41:23 2006
@@ -31,6 +31,16 @@
private String language;
private ResourceType resourceType;
+
+ /**
+ * The change action.
+ */
+ public static final Object CHANGED = "changed";
+ /**
+ * The removal action.
+ */
+ public static final Object REMOVED = "removed";
+
/**
* Ctor.
* @param session The session.
@@ -39,10 +49,12 @@
* @param uuid The UUID.
* @param language The language.
* @param resourceType The resource type.
+ * @param descriptor More information about the event, for example
+ * {@link #CHANGED} or {@link #REMOVED}.
*/
public DocumentEvent(Session session, String pubId, String area, String uuid, String language,
- ResourceType resourceType) {
- super(session);
+ ResourceType resourceType, Object descriptor) {
+ super(session, descriptor);
this.pubId = pubId;
this.area = area;
this.uuid = uuid;
Modified: lenya/trunk/src/java/org/apache/lenya/cms/observation/ObservationRegistry.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/observation/ObservationRegistry.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/observation/ObservationRegistry.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/observation/ObservationRegistry.java Mon Dec 11 09:41:23 2006
@@ -18,12 +18,11 @@
package org.apache.lenya.cms.observation;
import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.repository.NodeListener;
/**
* Observation registry.
*/
-public interface ObservationRegistry extends NodeListener {
+public interface ObservationRegistry extends RepositoryListener {
/**
* The Avalon service role.
Modified: lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEvent.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEvent.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEvent.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEvent.java Mon Dec 11 09:41:23 2006
@@ -18,6 +18,7 @@
package org.apache.lenya.cms.observation;
import org.apache.lenya.cms.repository.Session;
+import org.apache.lenya.util.Assert;
/**
* A repository event provides additional information if a document was added, changed, or removed.
@@ -25,13 +26,20 @@
public class RepositoryEvent {
private Session session;
+ private Object descriptor = null;
/**
* Ctor.
* @param session The session.
+ * @param descriptor More information about the event.
*/
- public RepositoryEvent(Session session) {
+ public RepositoryEvent(Session session, Object descriptor) {
+
+ Assert.notNull("session", session);
this.session = session;
+
+ Assert.notNull("descriptor", descriptor);
+ this.descriptor = descriptor;
}
/**
@@ -39,6 +47,13 @@
*/
public Session getSession() {
return this.session;
+ }
+
+ /**
+ * @return The descriptor.
+ */
+ public Object getDescriptor() {
+ return this.descriptor;
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryEventFactory.java Mon Dec 11 09:41:23 2006
@@ -25,6 +25,7 @@
import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.repository.Node;
+import org.apache.lenya.cms.repository.Session;
/**
* Factory to create repository events.
@@ -34,25 +35,55 @@
/**
* Creates a repository event for a node.
* @param manager The service manager.
+ * @param session The session.
+ * @param logger The logger.
+ * @param descriptor The descriptor.
+ * @return An event.
+ */
+ public static final RepositoryEvent createEvent(ServiceManager manager,
+ Session session, Logger logger, Object descriptor) {
+ return new RepositoryEvent(session, descriptor);
+ }
+
+ /**
+ * Creates a repository event for a node.
+ * @param manager The service manager.
+ * @param doc The document.
+ * @param logger The logger.
+ * @param descriptor The descriptor.
+ * @return An event.
+ */
+ public static final RepositoryEvent createEvent(ServiceManager manager, Document doc,
+ Logger logger, Object descriptor) {
+ try {
+ return new DocumentEvent(doc.getRepositoryNode().getSession(), doc.getPublication()
+ .getId(), doc.getArea(), doc.getUUID(), doc.getLanguage(), doc
+ .getResourceType(), descriptor);
+ } catch (DocumentException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ /**
+ * Creates a repository event for a node.
+ * @param manager The service manager.
* @param node The node.
* @param logger The logger.
+ * @param descriptor The descriptor.
* @return An event.
*/
- public static final RepositoryEvent createEvent(ServiceManager manager, Node node, Logger logger) {
+ public static final RepositoryEvent createEvent(ServiceManager manager, Node node,
+ Logger logger, Object descriptor) {
RepositoryEvent event;
Document doc = null;
if (!node.getSourceURI().endsWith("meta")) {
doc = getDocument(manager, node, logger);
}
if (doc != null) {
- try {
- event = new DocumentEvent(node.getSession(), doc.getPublication().getId(), doc
- .getArea(), doc.getUUID(), doc.getLanguage(), doc.getResourceType());
- } catch (DocumentException e) {
- throw new RuntimeException(e);
- }
+ event = createEvent(manager, doc, logger, descriptor);
} else {
- event = new RepositoryEvent(node.getSession());
+ event = new RepositoryEvent(node.getSession(), descriptor);
}
return event;
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryListener.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryListener.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryListener.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/observation/RepositoryListener.java Mon Dec 11 09:41:23 2006
@@ -23,15 +23,9 @@
public interface RepositoryListener {
/**
- * Called when a document was changed.
+ * Called when an event was fired.
* @param event The event.
*/
- void documentChanged(DocumentEvent event);
+ void eventFired(RepositoryEvent event);
- /**
- * Called when a document was removed.
- * @param event The event.
- */
- void documentRemoved(DocumentEvent event);
-
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/repository/Node.java Mon Dec 11 09:41:23 2006
@@ -134,8 +134,4 @@
*/
History getHistory();
- /**
- * @return The event to use when this node is added/changed/removed.
- */
- RepositoryEvent getEvent();
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/repository/Session.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/repository/Session.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/repository/Session.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/repository/Session.java Mon Dec 11 09:41:23 2006
@@ -18,6 +18,8 @@
package org.apache.lenya.cms.repository;
import org.apache.lenya.ac.Identity;
+import org.apache.lenya.cms.observation.RepositoryEvent;
+import org.apache.lenya.cms.observation.RepositoryListener;
import org.apache.lenya.transaction.UnitOfWork;
/**
@@ -55,13 +57,18 @@
* @param listener The listener to add.
* @throws RepositoryException if the listener is already registered.
*/
- void addListener(NodeListener listener) throws RepositoryException;
+ void addListener(RepositoryListener listener) throws RepositoryException;
/**
* Checks if a listener is registered.
* @param listener The listener.
* @return A boolean value.
*/
- boolean isListenerRegistered(NodeListener listener);
+ boolean isListenerRegistered(RepositoryListener listener);
+
+ /**
+ * @param event The event to add to the queue.
+ */
+ void enqueueEvent(RepositoryEvent event);
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/repository/SessionImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/repository/SessionImpl.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/repository/SessionImpl.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/repository/SessionImpl.java Mon Dec 11 09:41:23 2006
@@ -17,8 +17,10 @@
*/
package org.apache.lenya.cms.repository;
+import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
+import java.util.List;
import java.util.Set;
import org.apache.avalon.framework.container.ContainerUtil;
@@ -28,6 +30,7 @@
import org.apache.lenya.ac.Identity;
import org.apache.lenya.cms.observation.ObservationRegistry;
import org.apache.lenya.cms.observation.RepositoryEvent;
+import org.apache.lenya.cms.observation.RepositoryListener;
import org.apache.lenya.transaction.IdentityMap;
import org.apache.lenya.transaction.Lock;
import org.apache.lenya.transaction.Lockable;
@@ -93,40 +96,19 @@
*/
public void commit() throws RepositoryException {
- Set modifiedEvents = createEvents(this.modifiedObjects);
- Set removedEvents = createEvents(this.removedObjects);
-
try {
getUnitOfWork().commit();
} catch (TransactionException e) {
throw new RepositoryException(e);
}
- for (Iterator i = modifiedEvents.iterator(); i.hasNext(); ) {
- RepositoryEvent event = (RepositoryEvent) i.next();
- for (Iterator l = this.listeners.iterator(); l.hasNext(); ) {
- NodeListener listener = (NodeListener) l.next();
- listener.nodeChanged(event);
- }
- }
- for (Iterator i = removedEvents.iterator(); i.hasNext(); ) {
+ for (Iterator i = this.events.iterator(); i.hasNext(); ) {
RepositoryEvent event = (RepositoryEvent) i.next();
for (Iterator l = this.listeners.iterator(); l.hasNext(); ) {
- NodeListener listener = (NodeListener) l.next();
- listener.nodeRemoved(event);
- }
- }
- }
-
- protected Set createEvents(Set transactionables) {
- Set events = new HashSet();
- for (Iterator i = transactionables.iterator(); i.hasNext(); ) {
- Transactionable t = (Transactionable) i.next();
- if (t instanceof Node) {
- events.add(((Node) t).getEvent());
+ RepositoryListener listener = (RepositoryListener) l.next();
+ listener.eventFired(event);
}
}
- return events;
}
/**
@@ -189,7 +171,7 @@
private Set listeners = new HashSet();
- public void addListener(NodeListener listener) throws RepositoryException {
+ public void addListener(RepositoryListener listener) throws RepositoryException {
if (this.listeners.contains(listener)) {
throw new RepositoryException("The listener [" + listener
+ "] is already registered for node [" + this + "]!");
@@ -197,8 +179,15 @@
this.listeners.add(listener);
}
- public boolean isListenerRegistered(NodeListener listener) {
+ public boolean isListenerRegistered(RepositoryListener listener) {
return this.listeners.contains(listener);
+ }
+
+ private List events = new ArrayList();
+
+ public void enqueueEvent(RepositoryEvent event) {
+ Assert.isTrue("event belongs to session", event.getSession() == this);
+ this.events.add(event);
}
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java Mon Dec 11 09:41:23 2006
@@ -33,6 +33,8 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.lenya.ac.Identity;
import org.apache.lenya.cms.metadata.MetaData;
+import org.apache.lenya.cms.observation.RepositoryEvent;
+import org.apache.lenya.cms.observation.RepositoryEventFactory;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.ResourceType;
import org.apache.lenya.cms.repository.Session;
@@ -173,6 +175,11 @@
String string = number + " " + encodeVersion(workflow, version);
addToMetaData(string);
+
+ WorkflowEventDescriptor descriptor = new WorkflowEventDescriptor(version);
+ RepositoryEvent event = RepositoryEventFactory.createEvent(
+ this.manager, getDocument(), getLogger(), descriptor);
+ getDocument().getRepositoryNode().getSession().enqueueEvent(event);
}
protected void addToMetaData(String versionString) {
Added: lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowEventDescriptor.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowEventDescriptor.java?view=auto&rev=485769
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowEventDescriptor.java (added)
+++ lenya/trunk/src/java/org/apache/lenya/cms/workflow/WorkflowEventDescriptor.java Mon Dec 11 09:41:23 2006
@@ -0,0 +1,45 @@
+/*
+ * 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.cms.workflow;
+
+import org.apache.lenya.util.Assert;
+import org.apache.lenya.workflow.Version;
+
+/**
+ * Descriptor for workflow events.
+ */
+public class WorkflowEventDescriptor {
+
+ private Version version;
+
+ /**
+ * @param version The version.
+ */
+ public WorkflowEventDescriptor(Version version) {
+ Assert.notNull("version", version);
+ this.version = version;
+ }
+
+ /**
+ * @return The version.
+ */
+ public Version getVersion() {
+ return this.version;
+ }
+
+}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/cifs/CIFSUser.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/cifs/CIFSUser.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/cifs/CIFSUser.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/cifs/CIFSUser.java Mon Dec 11 09:41:23 2006
@@ -22,10 +22,12 @@
import java.io.IOException;
import java.util.Properties;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.file.FileUser;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.logger.Logger;
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbAuthException;
@@ -42,11 +44,11 @@
public class CIFSUser extends FileUser {
/**
- *
- */
- private static final long serialVersionUID = 1L;
+ *
+ */
+ private static final long serialVersionUID = 1L;
- private static Properties defaultProperties = null;
+ private static Properties defaultProperties = null;
// The name for the cifs.properties domain controller lookup
private static final String DOMAIN_CONTROLLER = "domain-controller";
@@ -54,25 +56,28 @@
// The name for the cifs.properties domain name lookup
private static final String DOMAIN = "domain";
-
/**
- * Creates a new CIFSUser object.
- */
- public CIFSUser() {
+ * Creates a new CIFSUser object.
+ * @param itemManager The item manager.
+ * @param logger The logger.
+ */
+ public CIFSUser(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
}
/**
- * Create a CIFSUser
- * @param configurationDirectory The configuration directory
+ * Create a CIFSUser
+ * @param itemManager The item manager.
+ * @param logger The logger.
* @param id The user ID.
* @param fullName The user's name.
* @param email The e-mail address.
* @param password The password.
- */
- public CIFSUser(File configurationDirectory, String id,
- String fullName,String email,String password) {
- super(configurationDirectory, id, fullName, email, password);
+ */
+ public CIFSUser(ItemManager itemManager, Logger logger, String id, String fullName,
+ String email, String password) {
+ super(itemManager, logger, id, fullName, email, password);
}
@@ -81,17 +86,18 @@
* @throws ConfigurationException when something went wrong.
*/
protected void initialize() throws ConfigurationException {
- try {
+ try {
readProperties(super.getConfigurationDirectory());
} catch (final IOException ioe) {
- throw new ConfigurationException("Reading cifs.properties file in ["+
- super.getConfigurationDirectory()+"] failed", ioe);
+ throw new ConfigurationException("Reading cifs.properties file in ["
+ + super.getConfigurationDirectory() + "] failed", ioe);
}
}
/**
* Create a new CIFSUser from a configuration
- * @param config the <code>Configuration</code> specifying the user details
+ * @param config the <code>Configuration</code> specifying the user
+ * details
* @throws ConfigurationException if the user could not be instantiated
*/
public void configure(Configuration config) throws ConfigurationException {
@@ -100,37 +106,32 @@
}
/**
- * Authenticate a user. This is done by NTDomain Authentication
- * using jcifs
+ * Authenticate a user. This is done by NTDomain Authentication using jcifs
* @param password to authenticate with
* @return true if the given password matches the password for this user
*/
public boolean authenticate(String password) {
- System.setProperty("jcifs.smb.client.disablePlainTextPasswords",
- "true" );
+ System.setProperty("jcifs.smb.client.disablePlainTextPasswords", "true");
try {
- UniAddress mydomaincontroller = UniAddress.getByName(
- getDomainController());
- NtlmPasswordAuthentication mycreds = new
- NtlmPasswordAuthentication(
- getDomainName(),
- super.getId(),
- password);
- SmbSession.logon( mydomaincontroller, mycreds );
+ UniAddress mydomaincontroller = UniAddress.getByName(getDomainController());
+ NtlmPasswordAuthentication mycreds = new NtlmPasswordAuthentication(getDomainName(),
+ super.getId(), password);
+ SmbSession.logon(mydomaincontroller, mycreds);
// SUCCESS
return true;
- } catch( final SmbAuthException sae ) {
+ } catch (final SmbAuthException sae) {
// AUTHENTICATION FAILURE
- if (getLogger().isInfoEnabled()) {
- getLogger().info("Authentication against [" + getDomainController() +"]" +
- " failed for " + getDomainName() + "/" + super.getId());
+ if (getLogger().isInfoEnabled()) {
+ getLogger().info(
+ "Authentication against [" + getDomainController() + "]" + " failed for "
+ + getDomainName() + "/" + super.getId());
}
return false;
- } catch(final SmbException se ) {
+ } catch (final SmbException se) {
// NETWORK PROBLEMS?
- return false;
- } catch(final UnknownHostException unho) {
+ return false;
+ } catch (final UnknownHostException unho) {
return false;
}
@@ -165,16 +166,16 @@
* Get the domain controller we want to authenticate against
* @return the name of the domain controller
*/
- private String getDomainController() {
- return (String)defaultProperties.get(DOMAIN_CONTROLLER);
- }
+ private String getDomainController() {
+ return (String) defaultProperties.get(DOMAIN_CONTROLLER);
+ }
/**
* Get the domain name
* @return the domain name
*/
- private String getDomainName() {
- return (String)defaultProperties.get(DOMAIN);
- }
+ private String getDomainName() {
+ return (String) defaultProperties.get(DOMAIN);
+ }
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileAccreditableManager.java Mon Dec 11 09:41:23 2006
@@ -229,7 +229,7 @@
* @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeGroupManager()
*/
protected GroupManager initializeGroupManager() throws AccessControlException {
- FileGroupManager _manager = FileGroupManager.instance(getConfigurationDirectory(), getLogger());
+ FileGroupManager _manager = FileGroupManager.instance(this, getConfigurationDirectory(), getLogger());
return _manager;
}
@@ -237,7 +237,7 @@
* @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeIPRangeManager()
*/
protected IPRangeManager initializeIPRangeManager() throws AccessControlException {
- FileIPRangeManager _manager = FileIPRangeManager.instance(getConfigurationDirectory(), getLogger());
+ FileIPRangeManager _manager = FileIPRangeManager.instance(this, getConfigurationDirectory(), getLogger());
return _manager;
}
@@ -245,7 +245,7 @@
* @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeRoleManager()
*/
protected RoleManager initializeRoleManager() throws AccessControlException {
- FileRoleManager _manager = FileRoleManager.instance(getConfigurationDirectory(), getLogger());
+ FileRoleManager _manager = FileRoleManager.instance(this, getConfigurationDirectory(), getLogger());
return _manager;
}
@@ -253,9 +253,17 @@
* @see org.apache.lenya.ac.impl.AbstractAccreditableManager#initializeUserManager()
*/
protected UserManager initializeUserManager() throws AccessControlException {
- FileUserManager _manager = FileUserManager.instance(getConfigurationDirectory(),
+ FileUserManager _manager = FileUserManager.instance(this, getConfigurationDirectory(),
getUserTypes(), getLogger());
return _manager;
+ }
+
+ public String getConfigurationCollectionUri() {
+ try {
+ return "file://" + getConfigurationDirectory().getCanonicalPath();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
}
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroup.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroup.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroup.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroup.java Mon Dec 11 09:41:23 2006
@@ -26,8 +26,10 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.Item;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.impl.AbstractGroup;
import org.apache.lenya.ac.impl.ItemConfiguration;
@@ -46,19 +48,23 @@
/**
* Creates a new FileGroup object.
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public FileGroup() {
- // do nothing
+ public FileGroup(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
}
/**
* Create a new instance of <code>FileGroup</code>
- * @param _configurationDirectory to which the group will be attached to
+ * @param itemManager The item manager.
+ * @param logger The logger.
* @param id the ID of the group
*/
- public FileGroup(File _configurationDirectory, String id) {
- super(id);
- setConfigurationDirectory(_configurationDirectory);
+ public FileGroup(ItemManager itemManager, Logger logger, String id) {
+ super(itemManager, logger, id);
+ FileItemManager fileItemManager = (FileItemManager) itemManager;
+ setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
}
/**
@@ -122,10 +128,7 @@
return this.configurationDirectory;
}
- /**
- * @see org.apache.lenya.ac.Item#setConfigurationDirectory(java.io.File)
- */
- public void setConfigurationDirectory(File _configurationDirectory) {
+ protected void setConfigurationDirectory(File _configurationDirectory) {
assert (_configurationDirectory != null) && _configurationDirectory.isDirectory();
this.configurationDirectory = _configurationDirectory;
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroupManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroupManager.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroupManager.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileGroupManager.java Mon Dec 11 09:41:23 2006
@@ -26,6 +26,7 @@
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.Group;
import org.apache.lenya.ac.GroupManager;
import org.apache.lenya.ac.Item;
@@ -39,26 +40,27 @@
/**
* Ctor.
+ * @param mgr The accreditable manager.
*/
- private FileGroupManager() {
- super();
+ private FileGroupManager(AccreditableManager mgr) {
+ super(mgr);
}
-
+
/**
- * Return the <code>GroupManager</code> for the given publication.
- * The <code>GroupManager</code> is a singleton.
- *
+ * Return the <code>GroupManager</code> for the given publication. The
+ * <code>GroupManager</code> is a singleton.
+ * @param mgr The accreditable manager.
* @param configurationDirectory for which the GroupManager is requested
* @param logger The logger.
* @return a <code>GroupManager</code>
* @throws AccessControlException if no GroupManager could be instanciated
*/
- public static FileGroupManager instance(File configurationDirectory, Logger logger)
- throws AccessControlException {
+ public static FileGroupManager instance(AccreditableManager mgr, File configurationDirectory,
+ Logger logger) throws AccessControlException {
assert configurationDirectory != null;
if (!instances.containsKey(configurationDirectory)) {
- FileGroupManager manager = new FileGroupManager();
+ FileGroupManager manager = new FileGroupManager(mgr);
manager.enableLogging(logger);
manager.configure(configurationDirectory);
instances.put(configurationDirectory, manager);
@@ -69,7 +71,7 @@
/**
* Get all groups
- *
+ *
* @return an array of groups.
*/
public Group[] getGroups() {
@@ -85,14 +87,14 @@
* @see org.apache.lenya.ac.GroupManager#add(java.lang.String)
*/
public Group add(String id) throws AccessControlException {
- Group group = new FileGroup(getConfigurationDirectory(), id);
+ Group group = new FileGroup(this, getLogger(), id);
super.add(group);
return group;
}
/**
* Remove a group from this manager
- *
+ *
* @param group the group to be removed
* @throws AccessControlException when the notification failed.
*/
@@ -102,16 +104,17 @@
/**
* Get the group with the given group name.
- *
+ *
* @param groupId the id of the requested group
- * @return a <code>Group</code> or null if there is no group with the given name
+ * @return a <code>Group</code> or null if there is no group with the
+ * given name
*/
public Group getGroup(String groupId) {
return (Group) getItem(groupId);
}
protected static final String SUFFIX = ".gml";
-
+
/**
* @see org.apache.lenya.ac.file.FileItemManager#getSuffix()
*/
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRange.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRange.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRange.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRange.java Mon Dec 11 09:41:23 2006
@@ -29,7 +29,9 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.Machine;
import org.apache.lenya.ac.impl.AbstractIPRange;
import org.apache.lenya.ac.impl.ItemConfiguration;
@@ -75,19 +77,23 @@
/**
* Ctor.
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public FileIPRange() {
- // do nothing
- }
+ public FileIPRange(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
+ }
/**
* Ctor.
- * @param configurationDirectory The configuration directory.
+ * @param itemManager The item manager.
+ * @param logger The logger.
* @param id The IP range ID.
*/
- public FileIPRange(File configurationDirectory, String id) {
- super(id);
- setConfigurationDirectory(configurationDirectory);
+ public FileIPRange(ItemManager itemManager, Logger logger, String id) {
+ super(itemManager, logger, id);
+ FileItemManager fileItemManager = (FileItemManager) itemManager;
+ setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
}
/**
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRangeManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRangeManager.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRangeManager.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileIPRangeManager.java Mon Dec 11 09:41:23 2006
@@ -26,6 +26,7 @@
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.IPRange;
import org.apache.lenya.ac.IPRangeManager;
import org.apache.lenya.ac.Item;
@@ -37,9 +38,10 @@
/**
* Ctor.
+ * @param mgr The accreditable manager.
*/
- private FileIPRangeManager() {
- // do nothing
+ private FileIPRangeManager(AccreditableManager mgr) {
+ super(mgr);
}
protected static final String SUFFIX = ".ipml";
@@ -55,12 +57,13 @@
/**
* Return an instance of FileIPRangeManager
+ * @param mgr The accreditable manager.
* @param configurationDirectory a directory
* @param logger The logger.
* @return an <code>IPRangeManager</code> value
* @exception AccessControlException if an error occurs
*/
- public static FileIPRangeManager instance(File configurationDirectory, Logger logger)
+ public static FileIPRangeManager instance(AccreditableManager mgr, File configurationDirectory, Logger logger)
throws AccessControlException {
assert configurationDirectory != null;
@@ -70,7 +73,7 @@
}
if (!instances.containsKey(configurationDirectory)) {
- FileIPRangeManager manager = new FileIPRangeManager();
+ FileIPRangeManager manager = new FileIPRangeManager(mgr);
manager.enableLogging(logger);
manager.configure(configurationDirectory);
instances.put(configurationDirectory, manager);
@@ -93,7 +96,7 @@
}
public IPRange add(String id) throws AccessControlException {
- IPRange range = new FileIPRange(getConfigurationDirectory(), id);
+ IPRange range = new FileIPRange(this, getLogger(), id);
super.add(range);
return range;
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileItemManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileItemManager.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileItemManager.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileItemManager.java Mon Dec 11 09:41:23 2006
@@ -23,6 +23,7 @@
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
+import java.lang.reflect.Constructor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
@@ -35,27 +36,34 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfigurationBuilder;
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.Group;
import org.apache.lenya.ac.Groupable;
import org.apache.lenya.ac.Item;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.ItemManagerListener;
import org.apache.lenya.ac.impl.ItemConfiguration;
/**
- * Abstract superclass for classes that manage items loaded from configuration files.
+ * Abstract superclass for classes that manage items loaded from configuration
+ * files.
*/
-public abstract class FileItemManager extends AbstractLogEnabled {
+public abstract class FileItemManager extends AbstractLogEnabled implements ItemManager {
private Map items = new HashMap();
private File configurationDirectory;
private DirectoryChangeNotifier notifier;
+ private AccreditableManager accreditableManager;
+
/**
* Create a new ItemManager.
+ * @param accreditableManager The {@link AccreditableManager}.
*/
- protected FileItemManager() {
- // do nothing
+ protected FileItemManager(AccreditableManager accreditableManager) {
+ this.accreditableManager = accreditableManager;
}
/**
@@ -149,8 +157,10 @@
String klass = ItemConfiguration.getItemClass(config);
if (item == null) {
try {
- item = (Item) Class.forName(klass).newInstance();
- item.enableLogging(getLogger());
+ Class[] paramTypes = { ItemManager.class, Logger.class };
+ Constructor ctor = Class.forName(klass).getConstructor(paramTypes);
+ Object[] params = { this, getLogger() };
+ item = (Item) ctor.newInstance(params);
} catch (Exception e) {
String errorMsg = "Exception when trying to instanciate: " + klass
+ " with exception: " + e.fillInStackTrace();
@@ -160,7 +170,6 @@
getLogger().error(errorMsg);
throw new AccessControlException(errorMsg, e);
}
- item.setConfigurationDirectory(this.configurationDirectory);
}
try {
@@ -198,7 +207,7 @@
}
protected void removeItem(File file) {
- // do nothing
+ // do nothing
}
/**
@@ -231,7 +240,8 @@
/**
* Add an Item to this manager
* @param item to be added
- * @throws AccessControlException when the notification threw this exception.
+ * @throws AccessControlException when the notification threw this
+ * exception.
*/
public void add(Item item) throws AccessControlException {
assert item != null;
@@ -245,7 +255,8 @@
/**
* Remove an item from this manager
* @param item to be removed
- * @throws AccessControlException when the notification threw this exception.
+ * @throws AccessControlException when the notification threw this
+ * exception.
*/
public void remove(Item item) throws AccessControlException {
this.items.remove(item.getId());
@@ -258,7 +269,8 @@
/**
* Update an item.
* @param newItem The new version of the item.
- * @throws AccessControlException when the notification threw this exception.
+ * @throws AccessControlException when the notification threw this
+ * exception.
*/
public void update(Item newItem) throws AccessControlException {
this.items.remove(newItem.getId());
@@ -395,8 +407,8 @@
private Set changedFiles = new HashSet();
/**
- * Checks if the directory has changed (a new file was added, a file was removed, a file has
- * changed).
+ * Checks if the directory has changed (a new file was added, a file was
+ * removed, a file has changed).
* @return A boolean value.
* @throws IOException when something went wrong.
*/
@@ -422,7 +434,8 @@
}
} else {
- Long lastModifiedObject = (Long) this.canonicalPath2LastModified.get(canonicalPath);
+ Long lastModifiedObject = (Long) this.canonicalPath2LastModified
+ .get(canonicalPath);
long lastModified = lastModifiedObject.longValue();
if (lastModified < files[i].lastModified()) {
this.changedFiles.add(files[i]);
@@ -447,7 +460,8 @@
}
}
- return !this.addedFiles.isEmpty() || !this.removedFiles.isEmpty() || !this.changedFiles.isEmpty();
+ return !this.addedFiles.isEmpty() || !this.removedFiles.isEmpty()
+ || !this.changedFiles.isEmpty();
}
/**
@@ -474,6 +488,10 @@
return (File[]) this.changedFiles.toArray(new File[this.changedFiles.size()]);
}
+ }
+
+ public AccreditableManager getAccreditableManager() {
+ return this.accreditableManager;
}
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRole.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRole.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRole.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRole.java Mon Dec 11 09:41:23 2006
@@ -24,8 +24,10 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.Item;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.impl.AbstractRole;
import org.apache.lenya.ac.impl.ItemConfiguration;
@@ -37,27 +39,33 @@
/**
* Creates a new file role.
- * @param _configurationDirectory The configuration directory.
+ * @param itemManager The item manager.
+ * @param logger The logger.
* @param id The role ID.
*/
- public FileRole(File _configurationDirectory, String id) {
+ public FileRole(ItemManager itemManager, Logger logger, String id) {
+ this(itemManager, logger);
setId(id);
- setConfigurationDirectory(_configurationDirectory);
}
protected static final String ROLE = "role";
/**
* Creates a new FileRole object.
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public FileRole() {
- // do nothing
+ public FileRole(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
+ FileItemManager fileItemManager = (FileItemManager) itemManager;
+ setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
}
/**
* Configure this instance of <code>FileRole</code>
* @param config containing the role details
- * @throws ConfigurationException if the <code>FileRole</code> could not be configured
+ * @throws ConfigurationException if the <code>FileRole</code> could not
+ * be configured
*/
public void configure(Configuration config) throws ConfigurationException {
new ItemConfiguration().configure(this, config);
@@ -100,10 +108,7 @@
return this.configurationDirectory;
}
- /**
- * @see org.apache.lenya.ac.Item#setConfigurationDirectory(java.io.File)
- */
- public void setConfigurationDirectory(File file) {
+ protected void setConfigurationDirectory(File file) {
this.configurationDirectory = file;
}
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRoleManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRoleManager.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRoleManager.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileRoleManager.java Mon Dec 11 09:41:23 2006
@@ -24,6 +24,7 @@
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.Item;
import org.apache.lenya.ac.Role;
import org.apache.lenya.ac.RoleManager;
@@ -39,22 +40,24 @@
/**
* Return the <code>RoleManager</code> for this configuration directory. The
* <code>RoleManager</code> is a singleton.
+ * @param mgr The accreditable manager.
*/
- protected FileRoleManager() {
- // do nothing
+ protected FileRoleManager(AccreditableManager mgr) {
+ super(mgr);
}
/**
* Returns the role manager for this configuration directory.
+ * @param mgr The accreditable manager.
* @param configurationDirectory The configuration directory.
* @param logger The logger.
* @return A role manager.
* @throws AccessControlException when something went wrong.
*/
- public static FileRoleManager instance(File configurationDirectory, Logger logger)
+ public static FileRoleManager instance(AccreditableManager mgr, File configurationDirectory, Logger logger)
throws AccessControlException {
if (!instances.containsKey(configurationDirectory)) {
- FileRoleManager manager = new FileRoleManager();
+ FileRoleManager manager = new FileRoleManager(mgr);
manager.enableLogging(logger);
manager.configure(configurationDirectory);
instances.put(configurationDirectory, manager);
@@ -108,5 +111,9 @@
*/
public void remove(Role role) throws AccessControlException {
super.remove(role);
+ }
+
+ protected Item createItem() {
+ return new FileRole(this, getLogger());
}
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUser.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUser.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUser.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUser.java Mon Dec 11 09:41:23 2006
@@ -25,9 +25,12 @@
import org.apache.avalon.framework.configuration.ConfigurationException;
import org.apache.avalon.framework.configuration.DefaultConfiguration;
import org.apache.avalon.framework.configuration.DefaultConfigurationSerializer;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.Group;
+import org.apache.lenya.ac.GroupManager;
import org.apache.lenya.ac.Item;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.impl.AbstractUser;
import org.apache.lenya.ac.impl.ItemConfiguration;
@@ -38,10 +41,10 @@
public class FileUser extends AbstractUser implements Item, Serializable {
/**
- *
- */
- private static final long serialVersionUID = 1L;
- protected static final String ID = "identity";
+ *
+ */
+ private static final long serialVersionUID = 1L;
+ protected static final String ID = "identity";
protected static final String EMAIL = "email";
protected static final String MENU_LOCALE = "default-menu-locale";
protected static final String DOCUMENT_LOCALE = "default-document-locale";
@@ -52,29 +55,36 @@
/**
* Creates a new FileUser object.
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public FileUser() {
- // do nothing
+ public FileUser(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
+ FileItemManager fileItemManager = (FileItemManager) itemManager;
+ setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
}
/**
* Create a FileUser
- * @param _configurationDirectory where the user will be attached to
+ * @param itemManager The item manager.
+ * @param logger The logger.
* @param id the user id
* @param fullName the full name of the user
* @param email the users email address
* @param password the users password
*/
- public FileUser(File _configurationDirectory, String id, String fullName, String email,
- String password) {
- super(id, fullName, email, password);
- setConfigurationDirectory(_configurationDirectory);
+ public FileUser(ItemManager itemManager, Logger logger, String id, String fullName,
+ String email, String password) {
+ super(itemManager, logger, id, fullName, email, password);
+ FileItemManager fileItemManager = (FileItemManager) itemManager;
+ setConfigurationDirectory(fileItemManager.getConfigurationDirectory());
}
/**
* Configure this FileUser.
* @param config where the user details are specified
- * @throws ConfigurationException if the necessary details aren't specified in the config
+ * @throws ConfigurationException if the necessary details aren't specified
+ * in the config
*/
public void configure(Configuration config) throws ConfigurationException {
new ItemConfiguration().configure(this, config);
@@ -89,14 +99,11 @@
if (groups.length == 1) {
groups = groups[0].getChildren(GROUP);
- FileGroupManager manager = null;
-
+ GroupManager manager;
try {
- manager = FileGroupManager.instance(this.configurationDirectory, getLogger());
+ manager = getAccreditableManager().getGroupManager();
} catch (AccessControlException e) {
- throw new ConfigurationException(
- "Exception when trying to fetch GroupManager for directory: ["
- + this.configurationDirectory + "]", e);
+ throw new ConfigurationException("configuration failed: ", e);
}
for (int i = 0; i < groups.length; i++) {
@@ -120,7 +127,8 @@
}
/**
- * Create a configuration from the current user details. Can be used for saving.
+ * Create a configuration from the current user details. Can be used for
+ * saving.
* @return a <code>Configuration</code>
*/
protected Configuration createConfiguration() {
@@ -143,7 +151,7 @@
child = new DefaultConfiguration(DOCUMENT_LOCALE);
child.setValue(getDefaultDocumentLocale());
config.addChild(child);
-
+
// add password node
child = new DefaultConfiguration(PASSWORD);
child.setValue(getEncryptedPassword());
@@ -207,10 +215,7 @@
return this.configurationDirectory;
}
- /**
- * @see org.apache.lenya.ac.Item#setConfigurationDirectory(java.io.File)
- */
- public void setConfigurationDirectory(File _configurationDirectory) {
+ protected void setConfigurationDirectory(File _configurationDirectory) {
assert (_configurationDirectory != null) && _configurationDirectory.isDirectory();
this.configurationDirectory = _configurationDirectory;
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUserManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUserManager.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUserManager.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/file/FileUserManager.java Mon Dec 11 09:41:23 2006
@@ -27,6 +27,7 @@
import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.AccreditableManager;
import org.apache.lenya.ac.Item;
import org.apache.lenya.ac.User;
import org.apache.lenya.ac.UserManager;
@@ -44,24 +45,27 @@
/**
* Create a UserManager
*
+ * @param mgr The accreditable manager.
* @param _userTypes The supported user types.
* @throws AccessControlException if the UserManager could not be instantiated.
*/
- private FileUserManager(UserType[] _userTypes)
+ private FileUserManager(AccreditableManager mgr, UserType[] _userTypes)
throws AccessControlException {
+ super(mgr);
this.userTypes = new HashSet(Arrays.asList(_userTypes));
}
/**
* Describe <code>instance</code> method here.
*
+ * @param mgr The accreditable manager.
* @param configurationDirectory a directory
* @param userTypes The supported user types.
* @param logger The logger.
* @return an <code>UserManager</code> value
* @exception AccessControlException if an error occurs
*/
- public static FileUserManager instance(File configurationDirectory, UserType[] userTypes, Logger logger)
+ public static FileUserManager instance(AccreditableManager mgr, File configurationDirectory, UserType[] userTypes, Logger logger)
throws AccessControlException {
assert configurationDirectory != null;
@@ -71,7 +75,7 @@
}
if (!instances.containsKey(configurationDirectory)) {
- FileUserManager manager = new FileUserManager(userTypes);
+ FileUserManager manager = new FileUserManager(mgr, userTypes);
manager.enableLogging(logger);
manager.configure(configurationDirectory);
instances.put(configurationDirectory, manager);
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroup.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroup.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroup.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroup.java Mon Dec 11 09:41:23 2006
@@ -23,10 +23,12 @@
import java.util.HashSet;
import java.util.Set;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.Accreditable;
import org.apache.lenya.ac.Group;
import org.apache.lenya.ac.Groupable;
+import org.apache.lenya.ac.ItemManager;
/**
@@ -36,16 +38,21 @@
/**
* Creates a new group.
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public AbstractGroup() {
- // do nothing
+ public AbstractGroup(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
}
/**
* Creates a new group.
+ * @param itemManager The item manager.
+ * @param logger The logger.
* @param id The group ID.
*/
- public AbstractGroup(String id) {
+ public AbstractGroup(ItemManager itemManager, Logger logger, String id) {
+ super(itemManager, logger);
setId(id);
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractGroupable.java Mon Dec 11 09:41:23 2006
@@ -22,9 +22,12 @@
import java.util.HashSet;
import java.util.Set;
+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;
/**
* Abstract implementation for group members.
@@ -34,9 +37,11 @@
/**
* Ctor.
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public AbstractGroupable() {
- // do nothing
+ public AbstractGroupable(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
}
private Set groups = new HashSet();
@@ -92,6 +97,10 @@
}
return (Accreditable[]) accreditables.toArray(new Accreditable[accreditables.size()]);
+ }
+
+ public AccreditableManager getAccreditableManager() {
+ return getItemManager().getAccreditableManager();
}
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractIPRange.java Mon Dec 11 09:41:23 2006
@@ -25,8 +25,10 @@
import java.net.UnknownHostException;
import java.util.Arrays;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
import org.apache.lenya.ac.IPRange;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.Machine;
import org.apache.lenya.net.InetAddressUtil;
@@ -67,9 +69,13 @@
*/
/**
+ * Ctor.
* Initializes the the IP range with the local host (127.0.0.1/24 for IPv4, ::1/128 for IPv6).
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public AbstractIPRange() {
+ public AbstractIPRange(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
try {
this.networkAddress = InetAddress.getLocalHost();
byte[] mask = null;
@@ -96,9 +102,12 @@
/**
* Ctor.
+ * @param itemManager The item manager.
+ * @param logger The logger.
* @param id The IP range ID.
*/
- public AbstractIPRange(String id) {
+ public AbstractIPRange(ItemManager itemManager, Logger logger, String id) {
+ super(itemManager, logger);
setId(id);
}
@@ -112,10 +121,7 @@
return this.configurationDirectory;
}
- /**
- * @see org.apache.lenya.ac.Item#setConfigurationDirectory(java.io.File)
- */
- public void setConfigurationDirectory(File _configurationDirectory) {
+ protected void setConfigurationDirectory(File _configurationDirectory) {
this.configurationDirectory = _configurationDirectory;
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractItem.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractItem.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractItem.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractItem.java Mon Dec 11 09:41:23 2006
@@ -18,9 +18,14 @@
package org.apache.lenya.ac.impl;
+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.AccreditableManager;
import org.apache.lenya.ac.Item;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.ItemUtil;
+import org.apache.lenya.util.Assert;
/**
* Abstract superclass for all access control objects that can be managed by an
@@ -33,11 +38,27 @@
private String description = "";
private String name = "";
+ private AccreditableManager accreditableManager;
+ private ItemManager itemManager;
+
/**
* Ctor.
+ * @param itemManager The item manager this item belongs to.
+ * @param logger The logger.
*/
- public AbstractItem() {
- // do nothing
+ public AbstractItem(ItemManager itemManager, Logger logger) {
+ Assert.notNull("item manager", itemManager);
+ this.itemManager = itemManager;
+
+ Assert.notNull("logger", logger);
+ ContainerUtil.enableLogging(this, logger);
+ }
+
+ /**
+ * @return The accreditable manager.
+ */
+ public AccreditableManager getAccreditableManager() {
+ return this.accreditableManager;
}
/**
@@ -128,4 +149,9 @@
}
return 0;
}
+
+ public ItemManager getItemManager() {
+ return this.itemManager;
+ }
+
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractRole.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractRole.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractRole.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractRole.java Mon Dec 11 09:41:23 2006
@@ -21,7 +21,9 @@
package org.apache.lenya.ac.impl;
import org.apache.avalon.framework.logger.Logger;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.Role;
+import org.apache.lenya.util.Assert;
/**
@@ -31,18 +33,22 @@
/**
* Creates a new instance of Role.
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public AbstractRole() {
- // do nothing
+ public AbstractRole(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
}
/**
* Creates a new instance of Role.
- * @param name The role name.
+ * @param itemManager The item manager.
* @param logger The logger.
+ * @param name The role name.
*/
- public AbstractRole(String name, Logger logger) {
- assert name != null;
+ public AbstractRole(ItemManager itemManager, Logger logger, String name) {
+ this(itemManager, logger);
+ Assert.notNull("name", name);
setName(name);
}
Modified: lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractUser.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractUser.java?view=diff&rev=485769&r1=485768&r2=485769
==============================================================================
--- lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractUser.java (original)
+++ lenya/trunk/src/modules-core/ac-impl/java/src/org/apache/lenya/ac/impl/AbstractUser.java Mon Dec 11 09:41:23 2006
@@ -18,7 +18,9 @@
package org.apache.lenya.ac.impl;
+import org.apache.avalon.framework.logger.Logger;
import org.apache.lenya.ac.AccessControlException;
+import org.apache.lenya.ac.ItemManager;
import org.apache.lenya.ac.Password;
import org.apache.lenya.ac.User;
@@ -30,24 +32,30 @@
private String email;
private String encryptedPassword;
- private String defaultMenuLocale;
+ private String defaultMenuLocale;
private String defaultDocumentLocale;
/**
* Creates a new User.
+ * @param itemManager The item manager.
+ * @param logger The logger.
*/
- public AbstractUser() {
- // do nothing
+ public AbstractUser(ItemManager itemManager, Logger logger) {
+ super(itemManager, logger);
}
/**
* Create a User instance
+ * @param itemManager The item manager.
+ * @param logger The logger.
* @param id the user id
* @param fullName the full name of the user
* @param _email the users email address
* @param password the users password
*/
- public AbstractUser(String id, String fullName, String _email, String password) {
+ public AbstractUser(ItemManager itemManager, Logger logger, String id, String fullName,
+ String _email, String password) {
+ this(itemManager, logger);
setId(id);
setName(fullName);
this.email = _email;
@@ -62,7 +70,6 @@
return this.email;
}
-
/**
* Set the email address
* @param _email the new email address
@@ -80,8 +87,9 @@
}
/**
- * This method can be used for subclasses to set the password without it being encrypted again.
- * Some subclass might have knowledge of the encrypted password and needs to be able to set it.
+ * This method can be used for subclasses to set the password without it
+ * being encrypted again. Some subclass might have knowledge of the
+ * encrypted password and needs to be able to set it.
* @param _encryptedPassword the encrypted password
*/
protected void setEncryptedPassword(String _encryptedPassword) {
@@ -96,30 +104,34 @@
return this.encryptedPassword;
}
- /**
- * @return Returns the defaultDocumentLocale.
- */
- public String getDefaultDocumentLocale() {
- return defaultDocumentLocale;
- }
- /**
- * @param defaultDocumentLocale The defaultDocumentLocale to set.
- */
- public void setDefaultDocumentLocale(String defaultDocumentLocale) {
- this.defaultDocumentLocale = defaultDocumentLocale;
- }
- /**
- * @return Returns the defaultMenuLocale.
- */
- public String getDefaultMenuLocale() {
- return defaultMenuLocale;
- }
- /**
- * @param defaultMenuLocale The defaultMenuLocale to set.
- */
- public void setDefaultMenuLocale(String defaultMenuLocale) {
- this.defaultMenuLocale = defaultMenuLocale;
- }
+ /**
+ * @return Returns the defaultDocumentLocale.
+ */
+ public String getDefaultDocumentLocale() {
+ return defaultDocumentLocale;
+ }
+
+ /**
+ * @param defaultDocumentLocale The defaultDocumentLocale to set.
+ */
+ public void setDefaultDocumentLocale(String defaultDocumentLocale) {
+ this.defaultDocumentLocale = defaultDocumentLocale;
+ }
+
+ /**
+ * @return Returns the defaultMenuLocale.
+ */
+ public String getDefaultMenuLocale() {
+ return defaultMenuLocale;
+ }
+
+ /**
+ * @param defaultMenuLocale The defaultMenuLocale to set.
+ */
+ public void setDefaultMenuLocale(String defaultMenuLocale) {
+ this.defaultMenuLocale = defaultMenuLocale;
+ }
+
/**
* Save the user
* @throws AccessControlException if the save failed
@@ -135,8 +147,8 @@
}
/**
- * Authenticate a user. This is done by encrypting the given password and comparing this to the
- * encryptedPassword.
+ * Authenticate a user. This is done by encrypting the given password and
+ * comparing this to the encryptedPassword.
* @param password to authenticate with
* @return true if the given password matches the password for this user
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org