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 2009/02/06 18:55:33 UTC

svn commit: r741654 [8/9] - in /lenya/trunk: org.apache.lenya.core.ac/src/main/java/org/apache/lenya/ac/impl/ org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/ac/ org.apache.lenya.core.ac/src/main/java/org/apache/lenya/cms/cocoon/acting/ org...

Modified: lenya/trunk/org.apache.lenya.module.simplesite/src/main/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.simplesite/src/main/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.simplesite/src/main/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java (original)
+++ lenya/trunk/org.apache.lenya.module.simplesite/src/main/java/org/apache/lenya/cms/site/simple/SimpleSiteManager.java Fri Feb  6 17:55:28 2009
@@ -17,16 +17,13 @@
  */
 package org.apache.lenya.cms.site.simple;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentException;
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentLocator;
 import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryItemFactory;
 import org.apache.lenya.cms.site.AbstractSiteManager;
 import org.apache.lenya.cms.site.SiteException;
 import org.apache.lenya.cms.site.SiteNode;
@@ -39,16 +36,10 @@
  * 
  * @version $Id$
  */
-public class SimpleSiteManager extends AbstractSiteManager implements Serviceable {
+public class SimpleSiteManager extends AbstractSiteManager {
 
-    private ServiceManager manager;
-
-    /**
-     * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
-     */
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
+    private DocumentStoreFactory documentStoreFactory;
+    private SourceResolver sourceResolver;
 
     /**
      * @see org.apache.lenya.cms.site.SiteManager#requires(org.apache.lenya.cms.publication.DocumentFactory,
@@ -95,9 +86,9 @@
             throws SiteException {
         String key = getKey(publication, area);
         DocumentStore store;
-        RepositoryItemFactory factory = new DocumentStoreFactory(this.manager, getLogger());
         try {
-            store = (DocumentStore) map.getSession().getRepositoryItem(factory, key);
+            store = (DocumentStore) map.getSession().getRepositoryItem(getDocumentStoreFactory(),
+                    key);
         } catch (Exception e) {
             throw new SiteException(e);
         }
@@ -108,12 +99,13 @@
     protected String getCollectionUuid(Publication pub) {
         String sourceUri = pub.getContentURI(Publication.AUTHORING_AREA) + DOCUMENT_PATH;
         try {
-            
-            if (!SourceUtil.exists(sourceUri, manager)) {
-                throw new RuntimeException("The site configuration [" + sourceUri + "] does not exist!");
+
+            if (!SourceUtil.exists(sourceUri, getSourceResolver())) {
+                throw new RuntimeException("The site configuration [" + sourceUri
+                        + "] does not exist!");
             }
-            
-            org.w3c.dom.Document xml = SourceUtil.readDOM(sourceUri, manager);
+
+            org.w3c.dom.Document xml = SourceUtil.readDOM(sourceUri, getSourceResolver());
             if (!xml.getDocumentElement().hasAttribute("uuid")) {
                 throw new RuntimeException("The document element of [" + sourceUri
                         + "] doesn't contain a uuid attribute!");
@@ -239,4 +231,26 @@
         return new DocumentLocator[0];
     }
 
+    /**
+     * TODO: Bean wiring
+     */
+    public void setDocumentStoreFactory(DocumentStoreFactory documentStoreFactory) {
+        this.documentStoreFactory = documentStoreFactory;
+    }
+
+    public DocumentStoreFactory getDocumentStoreFactory() {
+        return documentStoreFactory;
+    }
+
+    /**
+     * TODO: Bean wiring
+     */
+    public void setSourceResolver(SourceResolver sourceResolver) {
+        this.sourceResolver = sourceResolver;
+    }
+
+    public SourceResolver getSourceResolver() {
+        return sourceResolver;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/SitetreeModule.java Fri Feb  6 17:55:28 2009
@@ -24,18 +24,9 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceSelector;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.PageEnvelope;
 import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.cms.site.SiteManager;
-import org.apache.lenya.cms.site.tree.SiteTree;
-import org.apache.lenya.cms.site.tree.TreeSiteManager;
+import org.apache.lenya.cms.site.SiteStructure;
 
 /**
  * Module for sitetree access.
@@ -66,59 +57,40 @@
 
     /**
      * @see org.apache.cocoon.components.modules.input.InputModule#getAttribute(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
+     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
      */
     public Object getAttribute(String name, Configuration modeConf, Map objectModel)
             throws ConfigurationException {
 
         Object value = null;
-        ServiceSelector selector = null;
-        TreeSiteManager _manager = null;
 
         try {
             PageEnvelope envelope = getEnvelope(objectModel, name);
-            Publication publication = envelope.getPublication();
-            
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            _manager = (TreeSiteManager) selector.select(publication.getSiteManagerHint());
-            
-            Request request = ObjectModelHelper.getRequest(objectModel);
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory map = DocumentUtil.createDocumentFactory(this.manager, session);
+            Publication pub = envelope.getPublication();
 
+            SiteStructure site = null;
             if (name.equals(AUTHORING_NODE)) {
-                SiteTree authoringTree = _manager.getTree(map,
-                        publication,
-                        Publication.AUTHORING_AREA);
-                value = authoringTree.getNode(envelope.getDocument().getPath());
+                site = pub.getArea(Publication.AUTHORING_AREA).getSite();
             }
 
             if (name.equals(LIVE_NODE)) {
-                SiteTree liveTree = _manager.getTree(map, publication, Publication.LIVE_AREA);
-                value = liveTree.getNode(envelope.getDocument().getPath());
+                site = pub.getArea(Publication.LIVE_AREA).getSite();;
             }
 
             if (name.equals(TRASH_NODE)) {
-                SiteTree trashTree = _manager.getTree(map, publication, Publication.TRASH_AREA);
-                value = trashTree.getNode(envelope.getDocument().getPath());
+                site = pub.getArea(Publication.TRASH_AREA).getSite();;
             }
 
             if (name.equals(ARCHIVE_NODE)) {
-                SiteTree archiveTree = _manager.getTree(map, publication, Publication.ARCHIVE_AREA);
-                value = archiveTree.getNode(envelope.getDocument().getPath());
+                site = pub.getArea(Publication.ARCHIVE_AREA).getSite();;
+            }
+            if (site != null) {
+                value = site.getNode(envelope.getDocument().getPath());
             }
+
         } catch (Exception e) {
             throw new ConfigurationException("Obtaining value for [" + name + "] failed: ", e);
         }
-        finally {
-            if (selector != null) {
-                if (_manager != null) {
-                    selector.release(_manager);
-                }
-                this.manager.release(selector);
-            }
-        }
 
         return value;
     }
@@ -134,8 +106,7 @@
 
     /**
      * @see org.apache.cocoon.components.modules.input.InputModule#getAttributeValues(java.lang.String,
-     *      org.apache.avalon.framework.configuration.Configuration,
-     *      java.util.Map)
+     *      org.apache.avalon.framework.configuration.Configuration, java.util.Map)
      */
     public Object[] getAttributeValues(String name, Configuration modeConf, Map objectModel)
             throws ConfigurationException {

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/generation/SitetreeFragmentGenerator.java Fri Feb  6 17:55:28 2009
@@ -31,15 +31,12 @@
 import org.apache.cocoon.environment.Request;
 import org.apache.cocoon.generation.ServiceableGenerator;
 import org.apache.excalibur.source.Source;
-import org.apache.excalibur.source.SourceResolver;
 import org.apache.excalibur.source.SourceValidity;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.publication.PublicationException;
+import org.apache.lenya.cms.publication.Repository;
+import org.apache.lenya.cms.publication.Session;
 import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.cms.repository.RepositoryUtil;
-import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.cms.site.Link;
 import org.apache.lenya.cms.site.SiteException;
 import org.apache.lenya.cms.site.SiteNode;
@@ -82,6 +79,8 @@
 
     private String cacheKey;
     private SourceValidity validity;
+    
+    private Repository repository;
 
     protected static final String PARAM_PUB = "pub";
     protected static final String PARAM_AREA = "area";
@@ -172,8 +171,7 @@
 
         Source source = null;
         try {
-            Session session = RepositoryUtil.getSession(this.manager, request);
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
+            Session session = this.repository.getSession(request);
             String pubId = null;
             if (par.isParameter(PARAM_PUB)) {
                 pubId = par.getParameter(PARAM_PUB);
@@ -182,7 +180,7 @@
                 URLInformation info = new URLInformation(webappUrl);
                 pubId = info.getPublicationId();
             }
-            Publication pub = factory.getPublication(pubId);
+            Publication pub = session.getPublication(pubId);
             this.site = pub.getArea(area).getSite();
 
             if (this.path == null) {
@@ -547,4 +545,8 @@
         return this.validity;
     }
 
+    public void setRepository(Repository repository) {
+        this.repository = repository;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/IconUrlTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/IconUrlTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/IconUrlTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/cocoon/transformation/IconUrlTransformer.java Fri Feb  6 17:55:28 2009
@@ -22,8 +22,6 @@
 import java.util.Arrays;
 import java.util.Map;
 
-import org.apache.avalon.framework.activity.Disposable;
-import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.cocoon.ProcessingException;
@@ -35,11 +33,10 @@
 import org.apache.lenya.cms.linking.LinkRewriter;
 import org.apache.lenya.cms.linking.LinkTarget;
 import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.publication.Repository;
 import org.apache.lenya.cms.publication.ResourceType;
+import org.apache.lenya.cms.publication.Session;
 import org.apache.lenya.cms.publication.URLInformation;
-import org.apache.lenya.util.ServletHelper;
 import org.xml.sax.SAXException;
 
 /**
@@ -50,9 +47,10 @@
 
     private LinkResolver linkResolver;
     private IconLinkRewriter rewriter = null;
-    private DocumentFactory factory;
     private String pubId;
     private String area;
+    private Repository repository;
+    private Session session;
 
     protected LinkRewriter getLinkRewriter() {
         if (this.rewriter == null) {
@@ -79,7 +77,7 @@
                 try {
                     Link link = getLink(linkUri, pubId, area);
                     LinkTarget target = IconUrlTransformer.this.linkResolver.resolve(
-                            IconUrlTransformer.this.factory, link.getUri());
+                            IconUrlTransformer.this.session.getDocumentFactory(), link.getUri());
                     if (target.exists()) {
                         Document doc = target.getDocument();
                         ResourceType type = doc.getResourceType();
@@ -113,7 +111,7 @@
         super.setup(resolver, objectModel, src, params);
         try {
             Request request = ObjectModelHelper.getRequest(objectModel);
-            this.factory = DocumentUtil.getDocumentFactory(this.manager, request);
+            this.session = this.repository.getSession(request);
             this.linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
 
             String webappUrl = getWebappUrl(params, objectModel);
@@ -135,10 +133,14 @@
 
     public void recycle() {
         super.recycle();
-        this.factory = null;
+        this.session = null;
         this.pubId = null;
         this.area = null;
         this.linkResolver = null;
     }
 
+    public void setRepository(Repository repository) {
+        this.repository = repository;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/DefaultSiteTree.java Fri Feb  6 17:55:28 2009
@@ -25,7 +25,7 @@
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
-import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
 import org.apache.lenya.cms.publication.DocumentFactory;
@@ -68,7 +68,6 @@
     // exception.
     private String area = "";
     private Publication pub;
-    protected ServiceManager manager;
     private Document document;
     private DocumentFactory factory;
 
@@ -81,12 +80,11 @@
      * @param factory The document factory.
      * @param publication The publication.
      * @param _area The area.
-     * @param manager The service manager.
      * @param logger The logger.
      * @throws SiteException if an error occurs.
      */
     protected DefaultSiteTree(DocumentFactory factory, Publication publication, String _area,
-            ServiceManager manager, Log logger) throws SiteException {
+            Log logger) throws SiteException {
         setLogger(logger);
 
         this.factory = factory;
@@ -94,12 +92,10 @@
         this.sourceUri = publication.getSourceURI() + "/content/" + _area + "/"
                 + SITE_TREE_FILENAME;
         this.area = _area;
-        this.manager = manager;
         try {
             if (getRepositoryNode().exists()) {
                 this.document = DocumentHelper.readDocument(getRepositoryNode().getInputStream());
-            }
-            else {
+            } else {
                 getLogger().info("Empty sitetree will be created/initialized!");
                 this.document = createDocument();
             }
@@ -117,17 +113,16 @@
     }
 
     /**
-     * Checks if the tree file has been modified externally and reloads the site
-     * tree. protected synchronized void checkModified() { if
-     * (this.area.equals(Publication.LIVE_AREA) && this.treefile.lastModified() >
-     * this.lastModified) {
+     * Checks if the tree file has been modified externally and reloads the site tree. protected
+     * synchronized void checkModified() { if (this.area.equals(Publication.LIVE_AREA) &&
+     * this.treefile.lastModified() > this.lastModified) {
      * 
-     * if (getLogger().isDebugEnabled()) { getLogger().debug("Sitetree [" +
-     * this.treefile + "] has changed: reloading."); }
+     * if (getLogger().isDebugEnabled()) { getLogger().debug("Sitetree [" + this.treefile +
+     * "] has changed: reloading."); }
      * 
-     * try { this.document = DocumentHelper.readDocument(this.treefile); } catch
-     * (Exception e) { throw new IllegalStateException(e.getMessage()); }
-     * this.lastModified = this.treefile.lastModified(); } }
+     * try { this.document = DocumentHelper.readDocument(this.treefile); } catch (Exception e) {
+     * throw new IllegalStateException(e.getMessage()); } this.lastModified =
+     * this.treefile.lastModified(); } }
      */
 
     /**
@@ -148,8 +143,8 @@
     }
 
     /**
-     * Find a node in a subtree. The search is started at the given node. The
-     * list of ids contains the document-id split by "/".
+     * Find a node in a subtree. The search is started at the given node. The list of ids contains
+     * the document-id split by "/".
      * @param node where to start the search
      * @param ids list of node ids
      * @return the node that matches the path given in the list of ids
@@ -190,8 +185,8 @@
         }
     }
 
-    protected synchronized void addNode(String parentid, String id, String uuid, boolean visibleInNav)
-            throws SiteException {
+    protected synchronized void addNode(String parentid, String id, String uuid,
+            boolean visibleInNav) throws SiteException {
         addNode(parentid, id, uuid, visibleInNav, null, null, false);
     }
 
@@ -362,8 +357,7 @@
      * 
      * @param path the document-id of the Node that we're trying to get
      * 
-     * @return the Node if there is a Node for the given document-id, null
-     *         otherwise
+     * @return the Node if there is a Node for the given document-id, null otherwise
      * @throws SiteException
      */
     private synchronized Node getNodeInternal(String path) throws SiteException {
@@ -482,17 +476,13 @@
     public org.apache.lenya.cms.repository.Node getRepositoryNode() {
         if (this.repositoryNode == null) {
             Session session = this.getPublication().getFactory().getSession();
-            NodeFactory factory = null;
             try {
-                factory = (NodeFactory) manager.lookup(NodeFactory.ROLE);
-                this.repositoryNode = (org.apache.lenya.cms.repository.Node)
-                    session.getRepositoryItem(factory, this.sourceUri);
+                NodeFactory factory = (NodeFactory) WebAppContextUtils
+                        .getCurrentWebApplicationContext().getBean(NodeFactory.ROLE);
+                this.repositoryNode = (org.apache.lenya.cms.repository.Node) session
+                        .getRepositoryItem(factory, this.sourceUri);
             } catch (Exception e) {
                 throw new RuntimeException("Creating repository node failed: ", e);
-            } finally {
-                if (factory != null) {
-                    manager.release(factory);
-                }
             }
         }
         return this.repositoryNode;

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/SiteTreeFactory.java Fri Feb  6 17:55:28 2009
@@ -17,7 +17,6 @@
  */
 package org.apache.lenya.cms.site.tree;
 
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
 import org.apache.lenya.cms.publication.DocumentFactory;
@@ -35,15 +34,11 @@
  */
 public class SiteTreeFactory extends AbstractLogEnabled implements RepositoryItemFactory {
 
-    protected ServiceManager manager;
-
     /**
      * Ctor.
-     * @param manager The service manager.
      * @param logger The logger.
      */
-    public SiteTreeFactory(ServiceManager manager, Log logger) {
-        this.manager = manager;
+    public SiteTreeFactory(Log logger) {
         setLogger(logger);
     }
 
@@ -53,9 +48,9 @@
         String area = snippets[1];
         DefaultSiteTree tree;
         try {
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
+            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
             Publication publication = factory.getPublication(publicationId);
-            tree = new DefaultSiteTree(factory, publication, area, this.manager, getLogger());
+            tree = new DefaultSiteTree(factory, publication, area, getLogger());
         } catch (Exception e) {
             throw new RepositoryException(e);
         }

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree/TreeSiteManager.java Fri Feb  6 17:55:28 2009
@@ -21,7 +21,6 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentException;
 import org.apache.lenya.cms.publication.DocumentFactory;
@@ -41,7 +40,7 @@
  * 
  * @version $Id: TreeSiteManager.java 208766 2005-07-01 16:05:00Z andreas $
  */
-public class TreeSiteManager extends AbstractSiteManager implements Serviceable {
+public class TreeSiteManager extends AbstractSiteManager {
 
     /**
      * Ctor.
@@ -65,7 +64,7 @@
 
         String key = getKey(publication, area);
         DefaultSiteTree sitetree;
-        RepositoryItemFactory factory = new SiteTreeFactory(this.manager, getLogger());
+        RepositoryItemFactory factory = new SiteTreeFactory(getLogger());
         try {
             sitetree = (DefaultSiteTree) map.getSession().getRepositoryItem(factory, key);
         } catch (Exception e) {
@@ -134,7 +133,7 @@
             getLogger().debug("Obtaining requiring resources of [" + resource + "]");
         }
 
-        NodeSet nodes = new NodeSet(this.manager);
+        NodeSet nodes = new NodeSet();
         Publication pub = resource.getStructure().getPublication();
         String area = resource.getStructure().getArea();
         SiteTree tree = getTree(map, pub, area);

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/DelegatingSiteTree.java Fri Feb  6 17:55:28 2009
@@ -22,8 +22,7 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.lenya.cms.publication.Area;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.Publication;
@@ -38,13 +37,11 @@
 import org.apache.lenya.cms.site.tree.SiteTree;
 
 /**
- * Site tree implementation which delegates all operations to a shared site
- * tree.
+ * Site tree implementation which delegates all operations to a shared site tree.
  */
 public class DelegatingSiteTree implements SiteStructure, SiteTree {
 
     private Area area;
-    private ServiceManager manager;
     private Map links = new HashMap();
     private Map nodes = new HashMap();
     private List nodeList;
@@ -56,16 +53,13 @@
     private SiteTreeFactory factory;
 
     /**
-     * @param manager The service manager.
      * @param area The area which this tree belongs to.
      * @param factory The site tree factory.
      * @param store The shared item store.
      * @param key The key to build the sitetree.
      */
-    public DelegatingSiteTree(ServiceManager manager, Area area, SiteTreeFactory factory, Session session,
-            String key) {
+    public DelegatingSiteTree(Area area, SiteTreeFactory factory, Session session, String key) {
         this.area = area;
-        this.manager = manager;
         this.key = key;
         this.factory = factory;
         this.sharedItemStoreSession = session;
@@ -164,11 +158,8 @@
 
     protected NodeFactory getNodeFactory() {
         if (this.nodeFactory == null) {
-            try {
-                this.nodeFactory = (NodeFactory) this.manager.lookup(NodeFactory.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException("Creating repository node failed: ", e);
-            }
+            this.nodeFactory = (NodeFactory) WebAppContextUtils.getCurrentWebApplicationContext()
+                    .getBean(NodeFactory.ROLE);
         }
         return this.nodeFactory;
     }

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeFactory.java Fri Feb  6 17:55:28 2009
@@ -17,7 +17,6 @@
  */
 package org.apache.lenya.cms.site.tree2;
 
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
 import org.apache.lenya.cms.publication.Area;
@@ -37,16 +36,14 @@
  * @version $Id: SiteTreeFactory.java 179568 2005-06-02 09:27:26Z jwkaltz $
  */
 public class SiteTreeFactory extends AbstractLogEnabled implements RepositoryItemFactory {
-
-    protected ServiceManager manager;
+    
+    private SharedItemStore sharedItemStore;
 
     /**
      * Ctor.
-     * @param manager The service manager.
      * @param logger The logger.
      */
-    public SiteTreeFactory(ServiceManager manager, Log logger) {
-        this.manager = manager;
+    public SiteTreeFactory(Log logger) {
         setLogger(logger);
     }
 
@@ -55,25 +52,19 @@
         String publicationId = snippets[0];
         String areaName = snippets[1];
         SiteTree tree;
-        SharedItemStore store = null;
         try {
-            DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
+            DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
             Publication publication = factory.getPublication(publicationId);
             Area area = publication.getArea(areaName);
-            store = (SharedItemStore) this.manager.lookup(SharedItemStore.ROLE);
 
-            Session storeSession = store.getSession();
+            Session storeSession = getSharedItemStore().getSession();
             if (session.isModifiable() || session == storeSession) {
-                tree = new SiteTreeImpl(this.manager, area, getLogger());
+                tree = new SiteTreeImpl(area, getLogger());
             } else {
-                tree = new DelegatingSiteTree(this.manager, area, this, storeSession, key);
+                tree = new DelegatingSiteTree(area, this, storeSession, key);
             }
         } catch (Exception e) {
             throw new RepositoryException(e);
-        } finally {
-            if (store != null) {
-                this.manager.release(store);
-            }
         }
         return tree;
     }
@@ -82,4 +73,15 @@
         return SiteTree.IDENTIFIABLE_TYPE;
     }
 
+    /**
+     * TODO: Bean wiring
+     */
+    public void setSharedItemStore(SharedItemStore sharedItemStore) {
+        this.sharedItemStore = sharedItemStore;
+    }
+
+    public SharedItemStore getSharedItemStore() {
+        return sharedItemStore;
+    }
+
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeImpl.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeImpl.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/SiteTreeImpl.java Fri Feb  6 17:55:28 2009
@@ -21,8 +21,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
 import org.apache.cocoon.util.AbstractLogEnabled;
 import org.apache.commons.logging.Log;
 import org.apache.lenya.cms.publication.Area;
@@ -43,22 +42,20 @@
 /**
  * Simple site tree implementation.
  */
-public class SiteTreeImpl extends AbstractLogEnabled implements SiteStructure, SiteTree, Persistable {
+public class SiteTreeImpl extends AbstractLogEnabled implements SiteStructure, SiteTree,
+        Persistable {
 
     private Area area;
-    protected ServiceManager manager;
     private RootNode root;
     private int revision;
 
     /**
-     * @param manager The service manager.
      * @param area The area.
      * @param logger The logger.
      */
-    public SiteTreeImpl(ServiceManager manager, Area area, Log logger) {
+    public SiteTreeImpl(Area area, Log logger) {
         setLogger(logger);
         this.area = area;
-        this.manager = manager;
         initRoot();
     }
 
@@ -95,20 +92,19 @@
 
         try {
             repoNode.setPersistable(this);
-            
+
             if (repoNode.exists()) {
                 TreeBuilder builder = null;
                 try {
                     this.loading = true;
-                    builder = (TreeBuilder) this.manager.lookup(TreeBuilder.ROLE);
+                    builder = (TreeBuilder) WebAppContextUtils.getCurrentWebApplicationContext()
+                            .getBean(TreeBuilder.ROLE);
                     reset();
                     builder.buildTree(this);
-                    Assert.isTrue("Latest revision loaded", getRevision() == getRevision(getRepositoryNode()));
+                    Assert.isTrue("Latest revision loaded",
+                            getRevision() == getRevision(getRepositoryNode()));
                 } finally {
                     this.loading = false;
-                    if (builder != null) {
-                        this.manager.release(builder);
-                    }
                 }
             }
             this.loaded = true;
@@ -137,17 +133,13 @@
         }
         TreeWriter writer = null;
         try {
-            writer = (TreeWriter) this.manager.lookup(TreeWriter.ROLE);
+            writer = (TreeWriter) WebAppContextUtils.getCurrentWebApplicationContext().getBean(TreeWriter.ROLE);
             int revision = getRevision(getRepositoryNode()) + 1;
             writer.writeTree(this);
         } catch (RuntimeException e) {
             throw e;
         } catch (Exception e) {
             throw new RepositoryException(e);
-        } finally {
-            if (writer != null) {
-                this.manager.release(writer);
-            }
         }
 
     }
@@ -321,17 +313,14 @@
     public Session getSession() {
         return this.area.getPublication().getFactory().getSession();
     }
-    
+
     private NodeFactory nodeFactory;
     private boolean changed = false;
-    
+
     protected NodeFactory getNodeFactory() {
         if (this.nodeFactory == null) {
-            try {
-                this.nodeFactory = (NodeFactory) manager.lookup(NodeFactory.ROLE);
-            } catch (ServiceException e) {
-                throw new RuntimeException("Creating repository node failed: ", e);
-            }
+            this.nodeFactory = (NodeFactory) WebAppContextUtils.getCurrentWebApplicationContext()
+                    .getBean(NodeFactory.ROLE);
         }
         return this.nodeFactory;
     }
@@ -421,7 +410,7 @@
     protected int getRevision() {
         return this.revision;
     }
-    
+
     protected void setRevision(int revision) {
         this.revision = revision;
     }

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/TreeSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/TreeSiteManager.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/TreeSiteManager.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/tree2/TreeSiteManager.java Fri Feb  6 17:55:28 2009
@@ -54,7 +54,7 @@
 
         String key = getKey(area);
         SiteTree sitetree;
-        RepositoryItemFactory factory = new SiteTreeFactory(this.manager, getLogger());
+        RepositoryItemFactory factory = new SiteTreeFactory(getLogger());
         try {
             sitetree = (SiteTree) area.getPublication().getFactory().getSession()
                     .getRepositoryItem(factory, key);
@@ -230,7 +230,7 @@
 
     public SiteNode[] getRequiringResources(DocumentFactory map, SiteNode resource)
             throws SiteException {
-        NodeSet nodes = new NodeSet(this.manager);
+        NodeSet nodes = new NodeSet();
         SiteTree tree = (SiteTree) resource.getStructure();
 
         TreeNode node = (TreeNode) tree.getNode(resource.getPath());

Modified: lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/usecases/Nudge.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/usecases/Nudge.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/usecases/Nudge.java (original)
+++ lenya/trunk/org.apache.lenya.module.sitetree/src/main/java/org/apache/lenya/cms/site/usecases/Nudge.java Fri Feb  6 17:55:28 2009
@@ -17,11 +17,9 @@
  */
 package org.apache.lenya.cms.site.usecases;
 
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteManager;
 import org.apache.lenya.cms.site.SiteStructure;
 import org.apache.lenya.cms.site.tree.SiteTree;
 import org.apache.lenya.cms.site.tree.SiteTreeNode;
@@ -60,14 +58,8 @@
         }
 
         Publication publication = doc.getPublication();
-
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
         try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-            SiteStructure structure = siteManager.getSiteStructure(doc.getFactory(), publication,
-                    doc.getArea());
+            SiteStructure structure = publication.getArea(doc.getArea()).getSite();
             if (structure instanceof SiteTree) {
 
                 SiteTreeNode node = (SiteTreeNode) doc.getLink().getNode();
@@ -90,13 +82,6 @@
             }
         } catch (Exception e) {
             throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
         }
     }
 
@@ -105,7 +90,7 @@
      */
     protected Node[] getNodesToLock() throws UsecaseException {
         Node[] nodes = new Node[0];
-        if(getSourceDocument() != null) {
+        if (getSourceDocument() != null) {
             Node node = getSourceDocument().area().getSite().getRepositoryNode();
             nodes = new Node[] { node };
         }
@@ -119,13 +104,8 @@
         super.doExecute();
 
         Publication publication = getSourceDocument().getPublication();
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
         try {
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(publication.getSiteManagerHint());
-            SiteStructure structure = siteManager.getSiteStructure(
-                    getSourceDocument().getFactory(), publication, getSourceDocument().getArea());
+            SiteStructure structure = publication.getArea(getSourceDocument().getArea()).getSite();
             if (structure instanceof SiteTree) {
 
                 SiteTree tree = (SiteTree) structure;
@@ -143,13 +123,6 @@
             }
         } catch (Exception e) {
             throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
         }
 
     }

Modified: lenya/trunk/org.apache.lenya.module.tinymce/src/main/java/org/apache/lenya/cms/editors/tinymce/TinyMce.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.tinymce/src/main/java/org/apache/lenya/cms/editors/tinymce/TinyMce.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.tinymce/src/main/java/org/apache/lenya/cms/editors/tinymce/TinyMce.java (original)
+++ lenya/trunk/org.apache.lenya.module.tinymce/src/main/java/org/apache/lenya/cms/editors/tinymce/TinyMce.java Fri Feb  6 17:55:28 2009
@@ -15,7 +15,6 @@
  limitations under the License.
  */
 
-
 package org.apache.lenya.cms.editors.tinymce;
 
 import java.io.FileNotFoundException;
@@ -24,10 +23,9 @@
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.Request;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.lenya.cms.linking.LinkConverter;
 import org.apache.lenya.cms.publication.ResourceType;
@@ -45,8 +43,8 @@
 /**
  * TinyMce Usecase
  * 
- * since there is no really tinymce-specific code in here, most methods should
- * eventually be moved into DocumentUsecase and shared across all editor usecases.
+ * since there is no really tinymce-specific code in here, most methods should eventually be moved
+ * into DocumentUsecase and shared across all editor usecases.
  */
 
 public class TinyMce extends DocumentUsecase {
@@ -65,7 +63,7 @@
     protected void initParameters() {
         super.initParameters();
 
-        Request request = ContextHelper.getRequest(this.context);
+        HttpServletRequest request = getRequest();
         setParameter("host", "http://" + request.getServerName() + ":" + request.getServerPort());
         setParameter("requesturi", request.getRequestURI());
     }
@@ -75,8 +73,7 @@
      */
     protected void doCheckPreconditions() throws Exception {
         super.doCheckPreconditions();
-        UsecaseWorkflowHelper.checkWorkflow(this.manager, this, getEvent(), getSourceDocument(),
-                getLogger());
+        UsecaseWorkflowHelper.checkWorkflow(this, getEvent(), getSourceDocument(), getLogger());
     }
 
     /**
@@ -95,9 +92,7 @@
     }
 
     protected String getEncoding() {
-        Request request = ContextHelper.getRequest(this.context);
-        String encoding = request.getCharacterEncoding();
-        return encoding;
+        return getRequest().getCharacterEncoding();
     }
 
     protected String getXmlString(String encoding) {
@@ -114,7 +109,6 @@
         return content;
     }
 
-
     public void advance() throws UsecaseException {
         clearErrorMessages();
         try {
@@ -146,7 +140,7 @@
     protected void validate(Document xml) throws Exception {
         ResourceType resourceType = getSourceDocument().getResourceType();
         Schema schema = resourceType.getSchema();
-        ValidationUtil.validate(this.manager, xml, schema, new UsecaseErrorHandler(this));
+        ValidationUtil.validate(xml, schema, new UsecaseErrorHandler(this));
     }
 
     protected Document getXml() throws ParserConfigurationException, IOException {
@@ -162,11 +156,10 @@
         return xml;
     }
 
-   /**
-     * Save the content to the document source. After saving, the XML is
-     * validated. If validation errors occur, the usecase transaction is rolled
-     * back, so the changes are not persistent. If the validation succeeded, the
-     * workflow event is invoked.
+    /**
+     * Save the content to the document source. After saving, the XML is validated. If validation
+     * errors occur, the usecase transaction is rolled back, so the changes are not persistent. If
+     * the validation succeeded, the workflow event is invoked.
      * @param encoding The encoding to use.
      * @param content The content to save.
      * @throws Exception if an error occurs.
@@ -174,10 +167,10 @@
     protected void saveDocument(String encoding, String content) throws Exception {
         org.apache.lenya.cms.publication.Document doc = getSourceDocument();
         saveXMLFile(encoding, content, doc);
-        LinkConverter converter = new LinkConverter(this.manager, getLogger());
+        LinkConverter converter = new LinkConverter(getLogger());
         converter.convertUrlsToUuids(doc, false);
 
-        WorkflowUtil.invoke(this.manager, getLogger(), doc, getEvent());
+        WorkflowUtil.invoke(getLogger(), doc, getEvent());
     }
 
     /**
@@ -190,8 +183,8 @@
      * @throws IOException if an IO error occurs
      */
     private void saveXMLFile(String encoding, String content,
-            org.apache.lenya.cms.publication.Document document)
-            throws FileNotFoundException, UnsupportedEncodingException, IOException {
+            org.apache.lenya.cms.publication.Document document) throws FileNotFoundException,
+            UnsupportedEncodingException, IOException {
         Writer writer = null;
 
         try {
@@ -237,11 +230,11 @@
      * @param content The content to add them to
      * @return The content with the added namespaces
      */
-/*    private String addNamespaces(String namespaces, String content) {
-        int i = content.indexOf(">");
-        return content.substring(0, i) + " " + namespaces + content.substring(i);
-    }
-*/
+    /*
+     * private String addNamespaces(String namespaces, String content) { int i =
+     * content.indexOf(">"); return content.substring(0, i) + " " + namespaces +
+     * content.substring(i); }
+     */
 
     protected String getEvent() {
         return "edit";

Modified: lenya/trunk/org.apache.lenya.module.usecasedocument/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.usecasedocument/pom.xml?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.usecasedocument/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.module.usecasedocument/pom.xml Fri Feb  6 17:55:28 2009
@@ -16,6 +16,10 @@
   <name>Apache Lenya Module Usecase Document</name>
   <dependencies>
     <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.lenya</groupId>
       <artifactId>lenya-core-api</artifactId>
     </dependency>

Modified: lenya/trunk/org.apache.lenya.module.usecasedocument/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UsecaseDocumentModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.usecasedocument/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UsecaseDocumentModule.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.usecasedocument/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UsecaseDocumentModule.java (original)
+++ lenya/trunk/org.apache.lenya.module.usecasedocument/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UsecaseDocumentModule.java Fri Feb  6 17:55:28 2009
@@ -23,21 +23,24 @@
 import org.apache.avalon.framework.configuration.ConfigurationException;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.components.modules.input.AbstractInputModule;
 import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Request;
 import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.publication.Repository;
+import org.apache.lenya.cms.publication.Session;
 import org.apache.lenya.cms.site.usecases.CreateUsecaseDocument;
+import org.apache.lenya.util.ServletHelper;
 import org.apache.lenya.xml.DocumentHelper;
 
 /**
  * Module to retrieve information from a usecase resource type document.
  */
-public class UsecaseDocumentModule extends AbstractInputModule implements Serviceable {
+public class UsecaseDocumentModule extends AbstractInputModule {
 
     protected static final String USECASE = "usecase";
+    
+    private Repository repository;
 
     public Object getAttribute(String name, Configuration modeConf, Map objectModel)
             throws ConfigurationException {
@@ -46,7 +49,9 @@
         try {
             if (name.equals(USECASE)) {
                 Request request = ObjectModelHelper.getRequest(objectModel);
-                Document doc = DocumentUtil.getCurrentDocument(this.manager, request);
+                Session session = this.repository.getSession(request);
+                String webappUrl = ServletHelper.getWebappURI(request);
+                Document doc = session.getDocumentFactory().getFromURL(webappUrl);
                 org.w3c.dom.Document xmlDoc = DocumentHelper.readDocument(doc.getInputStream());
                 String usecaseName = xmlDoc.getDocumentElement().getAttribute(CreateUsecaseDocument.ATTRIBUTE_NAME);
                 value = usecaseName;
@@ -63,4 +68,8 @@
         this.manager = manager;
     }
 
+    public void setRepository(Repository repository) {
+        this.repository = repository;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.module.usecasedocument/src/main/java/org/apache/lenya/cms/site/usecases/CreateUsecaseDocument.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.usecasedocument/src/main/java/org/apache/lenya/cms/site/usecases/CreateUsecaseDocument.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.usecasedocument/src/main/java/org/apache/lenya/cms/site/usecases/CreateUsecaseDocument.java (original)
+++ lenya/trunk/org.apache.lenya.module.usecasedocument/src/main/java/org/apache/lenya/cms/site/usecases/CreateUsecaseDocument.java Fri Feb  6 17:55:28 2009
@@ -37,6 +37,7 @@
 
     protected static final String USECASE = "usecase";
     protected static final String RESOURCE_TYPE_USECASE = "usecase";
+    private UsecaseResolver usecaseResolver;
 
     /**
      * The namespace for usecase document content.
@@ -52,7 +53,7 @@
      * The local name of the name attribute.
      */
     public static final String ATTRIBUTE_NAME = "name";
-    
+
     protected void initParameters() {
         super.initParameters();
         setParameter(DOCUMENT_TYPE, RESOURCE_TYPE_USECASE);
@@ -66,16 +67,8 @@
         if (usecaseName.equals("")) {
             addErrorMessage("Please enter a usecase name.");
         } else {
-            UsecaseResolver resolver = null;
-            try {
-                resolver = (UsecaseResolver) this.manager.lookup(UsecaseResolver.ROLE);
-                if (!resolver.isRegistered(getSourceURL(), usecaseName)) {
-                    addErrorMessage("The usecase '" + usecaseName + "' is not registered.");
-                }
-            } finally {
-                if (resolver != null) {
-                    this.manager.release(resolver);
-                }
+            if (!getUsecaseResolver().isRegistered(getSourceURL(), usecaseName)) {
+                addErrorMessage("The usecase '" + usecaseName + "' is not registered.");
             }
         }
     }
@@ -90,4 +83,15 @@
 
     }
 
+    /**
+     * TODO: Bean wiring
+     */
+    public void setUsecaseResolver(UsecaseResolver usecaseResolver) {
+        this.usecaseResolver = usecaseResolver;
+    }
+
+    public UsecaseResolver getUsecaseResolver() {
+        return usecaseResolver;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/FilePropfind.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/FilePropfind.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/FilePropfind.java (original)
+++ lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/FilePropfind.java Fri Feb  6 17:55:28 2009
@@ -21,9 +21,6 @@
 import java.util.Vector;
 
 import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
 import org.apache.lenya.cms.publication.URLInformation;
 import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.cms.site.usecases.SiteUsecase;
@@ -97,27 +94,4 @@
         }
         return document;
     }
-
-    private Publication publication;
-
-    /**
-     * Access to the current publication. Use this when the publication is not yet known in the
-     * usecase: e.g. when creating a global asset. When adding a resource or a child to a document,
-     * access the publication via that document's interface instead.
-     * 
-     * @return the publication in which the use-case is being executed
-     */
-    protected Publication getPublication() {
-        if (this.publication == null) {
-            try {
-                this.publication = PublicationUtil.getPublicationFromUrl(this.manager,
-                        getDocumentFactory(),
-                        getSourceURL());
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.publication;
-    }
-
 }

Modified: lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Mkcol.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Mkcol.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Mkcol.java (original)
+++ lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Mkcol.java Fri Feb  6 17:55:28 2009
@@ -19,7 +19,6 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.metadata.MetaData;
 import org.apache.lenya.cms.metadata.MetaDataException;
@@ -28,6 +27,7 @@
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentManager;
 import org.apache.lenya.cms.publication.ResourceType;
+import org.apache.lenya.cms.publication.ResourceTypeResolver;
 import org.apache.lenya.cms.site.usecases.Create;
 
 /**
@@ -41,8 +41,14 @@
     protected static final String ATTRIBUTE_TYPE = "resource-type";
     protected static final String ELEMENT_EXTENSION = "extension";
 
+    private SourceResolver sourceResolver;
+    private DocumentManager documentManager;
+    private ResourceTypeResolver resourceTypeResolver;
+
+    /**
+     * TODO: Spring bean config
+     */
     public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
         Configuration typeConfig = config.getChild(ELEMENT_EXTENSION, false);
         if (typeConfig != null) {
             this.EXTENSION = typeConfig.getValue();
@@ -55,53 +61,26 @@
      */
     protected void doExecute() throws Exception {
         // super.doExecute();
-        SourceResolver resolver = null;
+        SourceResolver resolver = getSourceResolver();
         ResourceType resourceType = null;
 
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
+        Document doc = getSourceDocument();
+        // sanity check
+        if (doc == null)
+            throw new IllegalArgumentException("illegal usage, source document may not be null");
+
+        if (!doc.exists()) {
+
+            DocumentFactory map = getDocumentFactory();
+            String path = doc.getPath();
+
+            resourceType = getResourceTypeResolver().getResourceType(TYPE);
+            ResourceType.Sample sample = resourceType.getSample(resourceType.getSampleNames()[0]);
+            doc = getDocumentManager().add(map, resourceType, sample.getUri(), getPublication(),
+                    doc.getArea(), path, doc.getLanguage(), EXTENSION, doc.getName(), true);
+            doc.setMimeType(sample.getMimeType());
 
-            Document doc = getSourceDocument();
-            // sanity check
-            if (doc == null)
-                throw new IllegalArgumentException("illegal usage, source document may not be null");
-
-            if (!doc.exists()) {
-                DocumentManager documentManager = null;
-                ServiceSelector selector = null;
-                try {
-                    selector = (ServiceSelector) this.manager
-                            .lookup(ResourceType.ROLE + "Selector");
-
-                    documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-
-                    DocumentFactory map = getDocumentFactory();
-                    String path = doc.getPath();
-
-                    resourceType = (ResourceType) selector.select(TYPE);
-                    ResourceType.Sample sample = resourceType.getSample(resourceType.getSampleNames()[0]);
-                    doc = documentManager.add(map, resourceType, sample.getUri(), getPublication(), doc
-                            .getArea(), path, doc.getLanguage(), EXTENSION, doc.getName(), true);
-                    doc.setMimeType(sample.getMimeType());
-
-                    setMetaData(doc);
-                } finally {
-                    if (documentManager != null) {
-                        this.manager.release(documentManager);
-                    }
-                    if (selector != null) {
-                        if (resourceType != null) {
-                            selector.release(resourceType);
-                        }
-                        this.manager.release(selector);
-                    }
-                }
-            }
-
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
+            setMetaData(doc);
         }
     }
 
@@ -149,4 +128,37 @@
         return false;
     }
 
+    /**
+     * TODO: Bean wiring
+     */
+    public void setSourceResolver(SourceResolver sourceResolver) {
+        this.sourceResolver = sourceResolver;
+    }
+
+    public SourceResolver getSourceResolver() {
+        return sourceResolver;
+    }
+
+    public DocumentManager getDocumentManager() {
+        return documentManager;
+    }
+
+    /**
+     * TODO: Bean wiring
+     */
+    public void setDocumentManager(DocumentManager documentManager) {
+        this.documentManager = documentManager;
+    }
+
+    public ResourceTypeResolver getResourceTypeResolver() {
+        return resourceTypeResolver;
+    }
+
+    /**
+     * TODO: Bean wiring
+     */
+    public void setResourceTypeResolver(ResourceTypeResolver resourceTypeResolver) {
+        this.resourceTypeResolver = resourceTypeResolver;
+    }
+
 }

Modified: lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Propfind.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Propfind.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Propfind.java (original)
+++ lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Propfind.java Fri Feb  6 17:55:28 2009
@@ -21,13 +21,9 @@
 import java.util.Date;
 import java.util.Vector;
 
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
 import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteManager;
 import org.apache.lenya.cms.site.usecases.SiteUsecase;
 
 /**
@@ -55,10 +51,8 @@
     protected void initParameters() {
         super.initParameters();
 
-        Publication _publication = this.getPublication();
+        Publication pub = this.getPublication();
 
-        ServiceSelector siteManagerSelector = null;
-        SiteManager siteManager = null;
         Vector docs = new Vector();
         Vector checkedOut = new Vector();
 
@@ -72,12 +66,7 @@
         }
         try {
 
-            siteManagerSelector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE
-                    + "Selector");
-            siteManager = (SiteManager) siteManagerSelector.select(_publication.getSiteManagerHint());
-            Document[] documents = siteManager.getDocuments(getDocumentFactory(),
-                    _publication,
-                    Publication.AUTHORING_AREA);
+            Document[] documents = pub.getArea(Publication.AUTHORING_AREA).getDocuments();
 
             for (int i = 0; i < documents.length; i++) {
                 String test = documents[i].getCanonicalWebappURL().replaceFirst("/[^/]*.html", "");
@@ -103,18 +92,11 @@
             setParameter(DATEFORMAT, format);
             Date rootModDate = new Date();
             setParameter("rootModDate", rootModDate);
-            String defaultLang = _publication.getDefaultLanguage();
+            String defaultLang = pub.getDefaultLanguage();
             setParameter("defaultLang", defaultLang);
 
         } catch (Exception e) {
             throw new RuntimeException(e);
-        } finally {
-            if (siteManagerSelector != null) {
-                if (siteManager != null) {
-                    siteManagerSelector.release(siteManager);
-                }
-                this.manager.release(siteManagerSelector);
-            }
         }
     }
 
@@ -125,26 +107,4 @@
         return Publication.AUTHORING_AREA;
     }
 
-    private Publication publication;
-
-    /**
-     * Access to the current publication. Use this when the publication is not yet known in the
-     * usecase: e.g. when creating a global asset. When adding a resource or a child to a document,
-     * access the publication via that document's interface instead.
-     * 
-     * @return the publication in which the use-case is being executed
-     */
-    protected Publication getPublication() {
-        if (this.publication == null) {
-            try {
-                this.publication = PublicationUtil.getPublicationFromUrl(this.manager,
-                        getDocumentFactory(),
-                        getSourceURL());
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.publication;
-    }
-
 }

Modified: lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Put.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Put.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Put.java (original)
+++ lenya/trunk/org.apache.lenya.module.webdav/src/main/java/org/apache/lenya/cms/usecases/webdav/Put.java Fri Feb  6 17:55:28 2009
@@ -23,8 +23,6 @@
 
 import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
 import org.apache.lenya.cms.metadata.MetaData;
@@ -33,10 +31,8 @@
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.DocumentManager;
-import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationException;
-import org.apache.lenya.cms.publication.PublicationUtil;
 import org.apache.lenya.cms.publication.ResourceType;
+import org.apache.lenya.cms.publication.ResourceTypeResolver;
 import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.cms.site.NodeSet;
 import org.apache.lenya.cms.site.SiteStructure;
@@ -55,7 +51,7 @@
  * @version $Id: $
  */
 public class Put extends CreateDocument {
-    
+
     // registeredExtensions contain all known extension matching to a certain resource-type.
     private HashMap registeredExtensions = new HashMap();
     // default is xhtml and xml but you can override it with the config
@@ -65,11 +61,16 @@
     protected static final String ELEMENT_ROOT = "extensions";
     protected static final String ELEMENT_EXTENSION = "extension";
     protected static final String EVENT = "lenya.event";
-    
+
     private boolean fallback = false;
+    private SourceResolver sourceResolver;
+    private ResourceTypeResolver resourceTypeResolver;
+    private DocumentManager documentManager;
 
+    /**
+     * TODO: Spring bean configuration
+     */
     public void configure(Configuration config) throws ConfigurationException {
-        super.configure(config);
         Configuration extensionsConfig = config.getChild(ELEMENT_ROOT, false);
         if (extensionsConfig != null) {
             Configuration[] extensions = extensionsConfig.getChildren(ELEMENT_EXTENSION);
@@ -89,8 +90,7 @@
         String event = getParameterAsString(EVENT);
         if (event != null) {
             Document doc = getSourceDocument();
-            UsecaseWorkflowHelper.checkWorkflow(this.manager, this, event, doc,
-                    getLogger());
+            UsecaseWorkflowHelper.checkWorkflow(this, event, doc, getLogger());
         }
     }
 
@@ -98,92 +98,63 @@
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#doExecute()
      */
     protected void doExecute() throws Exception {
-        SourceResolver resolver = null;
+        SourceResolver resolver = getSourceResolver();
 
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-
-            Document doc = getSourceDocument();
-            String extension = getSourceExtension();
-            // sanity check
-            if (doc == null)
-                throw new IllegalArgumentException("illegal usage, source document may not be null");
-
-            // create new doc from PUT input
-            if (!doc.exists()) {
-                DocumentManager documentManager = null;
-                ServiceSelector selector = null;
-                ResourceType resourceType = null;
-                try {
-                    selector = (ServiceSelector) this.manager
-                            .lookup(ResourceType.ROLE + "Selector");
-
-                    documentManager = (DocumentManager) this.manager.lookup(DocumentManager.ROLE);
-
-                    DocumentFactory map = getDocumentFactory();
-                    String path = doc.getPath();
-                    // lookupResourceType(extension)
-                    resourceType = lookUpExtension(extension, selector);
-                    ResourceType.Sample sample = resourceType.getSample(resourceType.getSampleNames()[0]);
-                    doc = documentManager.add(map, resourceType, sample.getUri(), getPublication(), doc
-                            .getArea(), path, doc.getLanguage(), extension, doc.getName(), true);
-                    doc.setMimeType(sample.getMimeType());
-                    setMetaData(doc);
-                } finally {
-                    if (documentManager != null) {
-                        this.manager.release(documentManager);
-                    }
-                    if (selector != null) {
-                        if (resourceType != null) {
-                            selector.release(resourceType);
-                        }
-                        this.manager.release(selector);
-                    }
-                }
-            }
-
-            String sourceUri = "cocoon:/request/PUT/" + extension;
-            org.w3c.dom.Document xmlDoc = SourceUtil.readDOM(sourceUri, manager);
-
-            // validate if a schema is provided and we are not using any fallback
-            if (doc.getResourceType().getSchema() != null & fallback == false) {
-                validateDoc(resolver, xmlDoc, doc);
-            }
-
-            if (!hasErrors()) {
-                try {
-                    DocumentHelper.writeDocument(xmlDoc, doc.getOutputStream());
-                } catch (Exception e) {
-                    addErrorMessage("invalid source xml. Full exception: " + e);
-                }
-            }
+        Document doc = getSourceDocument();
+        String extension = getSourceExtension();
+        // sanity check
+        if (doc == null)
+            throw new IllegalArgumentException("illegal usage, source document may not be null");
+
+        // create new doc from PUT input
+        if (!doc.exists()) {
+            DocumentFactory map = getDocumentFactory();
+            String path = doc.getPath();
+            ResourceType resourceType = lookUpExtension(extension);
+            ResourceType.Sample sample = resourceType.getSample(resourceType.getSampleNames()[0]);
+            doc = getDocumentManager().add(map, resourceType, sample.getUri(), getPublication(),
+                    doc.getArea(), path, doc.getLanguage(), extension, doc.getName(), true);
+            doc.setMimeType(sample.getMimeType());
+            setMetaData(doc);
+        }
+
+        String sourceUri = "cocoon:/request/PUT/" + extension;
+        org.w3c.dom.Document xmlDoc = SourceUtil.readDOM(sourceUri, getSourceResolver());
+
+        // validate if a schema is provided and we are not using any fallback
+        if (doc.getResourceType().getSchema() != null & fallback == false) {
+            validateDoc(resolver, xmlDoc, doc);
+        }
 
-            String event = getParameterAsString(EVENT);
-            if (event != null) {
-                WorkflowUtil.invoke(this.manager, getLogger(), doc, event);
+        if (!hasErrors()) {
+            try {
+                DocumentHelper.writeDocument(xmlDoc, doc.getOutputStream());
+            } catch (Exception e) {
+                addErrorMessage("invalid source xml. Full exception: " + e);
             }
+        }
 
-        } finally {
-            if (resolver != null) {
-                this.manager.release(resolver);
-            }
+        String event = getParameterAsString(EVENT);
+        if (event != null) {
+            WorkflowUtil.invoke(getLogger(), doc, event);
         }
+
     }
 
-    private ResourceType lookUpExtension(String extension, ServiceSelector selector)
-            throws ServiceException {
+    private ResourceType lookUpExtension(String extension) {
         ResourceType resourceType;
         String resourceTypeName = (String) registeredExtensions.get(extension);
         if (resourceTypeName == null || resourceTypeName.equals("")) {
             resourceTypeName = (String) registeredExtensions.get(this.EXTENSION);
             this.fallback = true;
         }
-        if (selector.isSelectable(resourceTypeName)) {
-            resourceType = (ResourceType) selector.select(resourceTypeName);
+        ResourceTypeResolver resolver = getResourceTypeResolver();
+        if (resolver.existsResourceType(resourceTypeName)) {
+            resourceType = (ResourceType) resolver.getResourceType(resourceTypeName);
         } else {
             // using a fallback resource type
             // FIXME this resource tye should be a more generic one like "media-assets" or "bin"
-            resourceType = (ResourceType) selector.select(this.TYPE);
+            resourceType = (ResourceType) resolver.getResourceType(this.TYPE);
             this.fallback = true;
         }
         return resourceType;
@@ -193,7 +164,7 @@
             throws Exception {
         ResourceType resourceType = doc.getResourceType();
         Schema schema = resourceType.getSchema();
-        ValidationUtil.validate(this.manager, xmlDoc, schema, new UsecaseErrorHandler(this));
+        ValidationUtil.validate(xmlDoc, schema, new UsecaseErrorHandler(this));
     }
 
     /**
@@ -204,7 +175,7 @@
             Document doc = getSourceDocument();
             List nodes = new ArrayList();
 
-            NodeSet set = SiteUtil.getSubSite(this.manager, doc.getLink().getNode());
+            NodeSet set = SiteUtil.getSubSite(doc.getLink().getNode());
             Document[] documents = set.getDocuments();
             for (int i = 0; i < documents.length; i++) {
                 nodes.add(documents[i].getRepositoryNode());
@@ -240,27 +211,6 @@
         dcMetaData.setValue(DublinCore.ELEMENT_LANGUAGE, document.getLanguage());
     }
 
-    private Publication publication;
-
-    /**
-     * Access to the current publication. Use this when the publication is not yet known in the
-     * usecase: e.g. when creating a global asset. When adding a resource or a child to a document,
-     * access the publication via that document's interface instead.
-     * 
-     * @return the publication in which the use-case is being executed
-     */
-    protected Publication getPublication() {
-        if (this.publication == null) {
-            try {
-                this.publication = PublicationUtil.getPublicationFromUrl(this.manager,
-                        getDocumentFactory(), getSourceURL());
-            } catch (PublicationException e) {
-                throw new RuntimeException(e);
-            }
-        }
-        return this.publication;
-    }
-
     protected String getSourceExtension() {
         String destinationUri = getParameterAsString(SOURCE_URL);
         String extension = null;
@@ -288,21 +238,40 @@
     }
 
     protected String getDocumentTypeName() {
-        ResourceType resourceType = null;
-        ServiceSelector selector = null;
-        String docType = "";
-        try {
-            selector = (ServiceSelector) this.manager.lookup(ResourceType.ROLE + "Selector");
-            resourceType = lookUpExtension(getSourceExtension(), selector);
-            docType = resourceType.getName();
-        } catch (ServiceException e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                this.manager.release(selector);
-            }
-        }
-        return docType;
+        return lookUpExtension(getSourceExtension()).getName();
+    }
+
+    /**
+     * TODO: Bean wiring
+     */
+    public void setSourceResolver(SourceResolver sourceResolver) {
+        this.sourceResolver = sourceResolver;
+    }
+
+    public SourceResolver getSourceResolver() {
+        return sourceResolver;
+    }
+
+    public ResourceTypeResolver getResourceTypeResolver() {
+        return resourceTypeResolver;
+    }
+
+    /**
+     * TODO: Bean wiring
+     */
+    public void setResourceTypeResolver(ResourceTypeResolver resourceTypeResolver) {
+        this.resourceTypeResolver = resourceTypeResolver;
+    }
+
+    public DocumentManager getDocumentManager() {
+        return documentManager;
+    }
+
+    /**
+     * TODO: Bean wiring
+     */
+    public void setDocumentManager(DocumentManager documentManager) {
+        this.documentManager = documentManager;
     }
 
 }

Modified: lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/JCRNodeFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/JCRNodeFactory.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/JCRNodeFactory.java (original)
+++ lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/JCRNodeFactory.java Fri Feb  6 17:55:28 2009
@@ -17,10 +17,8 @@
  */
 package org.apache.lenya.cms.jcr;
 
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
 import org.apache.cocoon.util.AbstractLogEnabled;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.cms.repository.NodeFactory;
 import org.apache.lenya.cms.repository.RepositoryException;
@@ -30,21 +28,17 @@
 /**
  * JCR node factory.
  */
-public class JCRNodeFactory extends AbstractLogEnabled implements NodeFactory, Serviceable {
+public class JCRNodeFactory extends AbstractLogEnabled implements NodeFactory {
+    
+    private SourceResolver sourceResolver;
 
     public RepositoryItem buildItem(Session session, String key) throws RepositoryException {
-        return new JCRSourceNode(this.session, key, this.manager, getLogger());
+        return new JCRSourceNode(this.session, key, getSourceResolver(), getLogger());
     }
 
     public String getItemType() {
         return Node.IDENTIFIABLE_TYPE;
     }
-
-    private ServiceManager manager;
-
-    public void service(ServiceManager manager) throws ServiceException {
-        this.manager = manager;
-    }
     
     private Session session;
 
@@ -56,4 +50,12 @@
         return false;
     }
 
+    public void setSourceResolver(SourceResolver sourceResolver) {
+        this.sourceResolver = sourceResolver;
+    }
+
+    public SourceResolver getSourceResolver() {
+        return sourceResolver;
+    }
+
 }
\ No newline at end of file

Modified: lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/JCRSourceNode.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/JCRSourceNode.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/JCRSourceNode.java (original)
+++ lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/JCRSourceNode.java Fri Feb  6 17:55:28 2009
@@ -17,8 +17,8 @@
  */
 package org.apache.lenya.cms.jcr;
 
-import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.commons.logging.Log;
+import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.repository.RepositoryException;
 import org.apache.lenya.cms.repository.Session;
 import org.apache.lenya.cms.repository.SourceNode;
@@ -34,11 +34,10 @@
      * Ctor.
      * @param session The session.
      * @param sourceURI The source URI.
-     * @param manager The service manager.
      * @param logger The logger.
      */
-    public JCRSourceNode(Session session, String sourceURI, ServiceManager manager, Log logger) {
-        super(session, sourceURI, manager, logger);
+    public JCRSourceNode(Session session, String sourceURI, SourceResolver resolver, Log logger) {
+        super(session, sourceURI, resolver, logger);
         this.sourceUri = sourceURI;
     }
 

Modified: lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/usecases/Import.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/usecases/Import.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/usecases/Import.java (original)
+++ lenya/trunk/org.apache.lenya.optional.jcrsource/src/main/java/org/apache/lenya/cms/jcr/usecases/Import.java Fri Feb  6 17:55:28 2009
@@ -19,19 +19,16 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 
-import org.apache.avalon.framework.service.ServiceSelector;
 import org.apache.excalibur.source.SourceResolver;
 import org.apache.lenya.cms.cocoon.source.SourceUtil;
+import org.apache.lenya.cms.publication.Area;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentFactory;
 import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteManager;
 import org.apache.lenya.cms.usecase.AbstractUsecase;
 
 /**
@@ -42,6 +39,8 @@
     protected static final String PUBLICATIONS = "publications";
     protected static final String PUBLICATION = "publication";
 
+    private SourceResolver sourceResolver;
+
     protected void initParameters() {
         super.initParameters();
         Publication[] pubs = getDocumentFactory().getPublications();
@@ -53,65 +52,54 @@
         super.doExecute();
         String pubId = getParameterAsString(PUBLICATION);
         DocumentFactory factory = getDocumentFactory();
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        SourceResolver resolver = null;
-        try {
-            resolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
-            Publication pub = factory.getPublication(pubId);
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
-
-            List nodes = new ArrayList();
-            Map uri2meta = new HashMap();
-
-            String[] areas = { Publication.AUTHORING_AREA, Publication.LIVE_AREA,
-                    Publication.TRASH_AREA, Publication.ARCHIVE_AREA };
-            for (int i = 0; i < areas.length; i++) {
-                Document[] docs = siteManager.getDocuments(factory, pub, areas[i]);
-                for (int j = 0; j < docs.length; j++) {
-                    nodes.add(docs[j].getRepositoryNode());
-                    /*
-                    final String lenyaUri = docs[j].getSourceURI();
-                    final String sourcePath = lenyaUri.substring("lenya://".length());
-                    final String contextUri = "context://" + sourcePath + ".meta";
-                     * MetaDataManager meta = new MetaDataManager(contextUri, this.manager,
-                     * getLogger()); uri2meta.put(docs[j].getSourceURI(), meta);
-                     */
-                }
-                nodes.add(siteManager.getSiteStructure(factory, pub, areas[i]).getRepositoryNode());
-            }
+        Publication pub = factory.getPublication(pubId);
 
-            for (Iterator i = nodes.iterator(); i.hasNext();) {
-                Node node = (Node) i.next();
-                final String lenyaUri = node.getSourceURI();
-                final String sourcePath = lenyaUri.substring("lenya://".length());
-                final String contextUri = "context://" + sourcePath;
-                final String jcrUri = "jcr://" + sourcePath;
-                if (SourceUtil.exists(contextUri, this.manager)) {
-                    SourceUtil.copy(resolver, contextUri, jcrUri);
-                    /*
-                     * MetaDataManager sourceMgr = (MetaDataManager) uri2meta.get(lenyaUri); if
-                     * (sourceMgr != null) { MetaDataManager jcrMgr = new JCRMetaDataManager(jcrUri,
-                     * this.manager, getLogger()); jcrMgr.replaceMetaData(sourceMgr); }
-                     */
-                } else {
-                    addInfoMessage("The source [" + contextUri + "] does not exist.");
-                }
-            }
+        List nodes = new ArrayList();
 
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
+        String[] areas = { Publication.AUTHORING_AREA, Publication.LIVE_AREA,
+                Publication.TRASH_AREA, Publication.ARCHIVE_AREA };
+        for (int i = 0; i < areas.length; i++) {
+            Area area = pub.getArea(areas[i]);
+            Document[] docs = area.getDocuments();
+            for (int j = 0; j < docs.length; j++) {
+                nodes.add(docs[j].getRepositoryNode());
+                /*
+                 * final String lenyaUri = docs[j].getSourceURI(); final String sourcePath =
+                 * lenyaUri.substring("lenya://".length()); final String contextUri = "context://" +
+                 * sourcePath + ".meta"; MetaDataManager meta = new MetaDataManager(contextUri,
+                 * this.manager, getLogger()); uri2meta.put(docs[j].getSourceURI(), meta);
+                 */
             }
-            if (resolver != null) {
-                this.manager.release(resolver);
+            nodes.add(area.getSite().getRepositoryNode());
+        }
+
+        for (Iterator i = nodes.iterator(); i.hasNext();) {
+            Node node = (Node) i.next();
+            final String lenyaUri = node.getSourceURI();
+            final String sourcePath = lenyaUri.substring("lenya://".length());
+            final String contextUri = "context://" + sourcePath;
+            final String jcrUri = "jcr://" + sourcePath;
+            SourceResolver resolver = getSourceResolver();
+            if (SourceUtil.exists(contextUri, resolver)) {
+                SourceUtil.copy(resolver, contextUri, jcrUri);
+                /*
+                 * MetaDataManager sourceMgr = (MetaDataManager) uri2meta.get(lenyaUri); if
+                 * (sourceMgr != null) { MetaDataManager jcrMgr = new JCRMetaDataManager(jcrUri,
+                 * this.manager, getLogger()); jcrMgr.replaceMetaData(sourceMgr); }
+                 */
+            } else {
+                addInfoMessage("The source [" + contextUri + "] does not exist.");
             }
         }
 
     }
 
+    public void setSourceResolver(SourceResolver sourceResolver) {
+        this.sourceResolver = sourceResolver;
+    }
+
+    public SourceResolver getSourceResolver() {
+        return sourceResolver;
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org