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 [3/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.core.api/src/main/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/publication/util/DocumentLanguagesHelper.java Fri Feb 6 17:55:28 2009
@@ -24,7 +24,6 @@
import java.util.List;
import java.util.Map;
-import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.ObjectModelHelper;
import org.apache.cocoon.environment.Request;
@@ -34,7 +33,8 @@
import org.apache.lenya.cms.publication.DocumentLocator;
import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationUtil;
+import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.repository.RepositoryManager;
import org.apache.lenya.cms.repository.RepositoryUtil;
import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.util.ServletHelper;
@@ -45,30 +45,28 @@
public class DocumentLanguagesHelper {
private DocumentFactory factory;
- private ServiceManager manager;
private Publication pub;
private String url;
private String contextPath;
+
+ private RepositoryManager repositoryManager;
/**
* Create a new DocumentlanguageHelper.
* @param objectModel the objectModel
- * @param manager The service manager.
* @throws ProcessingException if the page envelope could not be created.
*/
- public DocumentLanguagesHelper(Map objectModel, ServiceManager manager)
+ public DocumentLanguagesHelper(Map objectModel)
throws ProcessingException {
- this.manager = manager;
Request request = ObjectModelHelper.getRequest(objectModel);
this.url = ServletHelper.getWebappURI(request);
this.contextPath = request.getContextPath();
try {
- Session session = RepositoryUtil.getSession(manager, request);
- this.factory = DocumentUtil.createDocumentFactory(this.manager, session);
-
- this.pub = PublicationUtil.getPublication(manager, objectModel);
+ Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+ this.factory = DocumentUtil.createDocumentFactory(session);
+ this.pub = this.factory.getPublication(new URLInformation(this.url).getPublicationId());
} catch (Exception e) {
throw new ProcessingException(e);
}
@@ -144,4 +142,12 @@
DocumentLocator locator = this.pub.getDocumentBuilder().getLocator(this.factory, this.url);
return locator;
}
+
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ public RepositoryManager getRepositoryManager() {
+ return repositoryManager;
+ }
}
\ No newline at end of file
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/repository/RepositoryUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/repository/RepositoryUtil.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/repository/RepositoryUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/repository/RepositoryUtil.java Fri Feb 6 17:55:28 2009
@@ -20,8 +20,6 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.cocoon.environment.Request;
import org.apache.lenya.ac.Identity;
/**
@@ -31,7 +29,7 @@
/**
* Returns the session attached to the request or creates a session.
- * @param manager The service manager.
+ * @param repoManager The repository manager.
* @param request The request.
* @return A session.
* @throws RepositoryException if an error occurs.
@@ -53,78 +51,17 @@
return session;
}
- /**
- * Returns the session attached to the request or creates a session.
- * @param manager The service manager.
- * @param request The request.
- * @return A session.
- * @throws RepositoryException if an error occurs.
- * @deprecated
- */
- public static Session getSession(ServiceManager manager, Request request)
- throws RepositoryException {
- Session session = (Session) request.getAttribute(Session.class.getName());
- if (session == null) {
- Identity identity = getIdentity(request);
- // attach a read-only repository session to the HTTP request
- session = createSession(manager, identity, false);
- request.setAttribute(Session.class.getName(), session);
- } else if (session.getIdentity() == null) {
- Identity identity = getIdentity(request);
- if (identity != null) {
- session.setIdentity(identity);
- }
- }
- return session;
- }
-
protected static Identity getIdentity(HttpServletRequest request) {
HttpSession session = request.getSession();
return (Identity) session.getAttribute(Identity.class.getName());
}
- protected static Identity getIdentity(Request request) {
- HttpSession cocoonSession = request.getSession();
- return (Identity) cocoonSession.getAttribute(Identity.class.getName());
- }
-
- /**
- * Creates a session.
- * @param manager The service manager.
- * @param identity The identity.
- * @param modifiable Determines if the repository items in this session should be modifiable.
- * @return a session.
- * @throws RepositoryException if an error occurs.
- * @deprecated
- */
- public static Session createSession(ServiceManager manager, Identity identity, boolean modifiable)
- throws RepositoryException {
- RepositoryManager repoMgr = null;
- Session session;
- try {
- repoMgr = (RepositoryManager) manager.lookup(RepositoryManager.ROLE);
- session = repoMgr.createSession(identity, modifiable);
- } catch (Exception e) {
- throw new RepositoryException(e);
- } finally {
- manager.release(repoMgr);
- }
- return session;
- }
-
/**
* Removes the repository session from the servlet session.
- * @param manager The service manager.
* @param request The current request.
*/
- public static void removeSession(ServiceManager manager, Request request) {
+ public static void removeSession(HttpServletRequest request) {
request.removeAttribute(Session.class.getName());
- /*
- org.apache.cocoon.environment.Session session = request.getSession(false);
- if (session != null) {
- session.removeAttribute(Session.class.getName());
- }
- */
}
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/AbstractSiteManager.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/AbstractSiteManager.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/AbstractSiteManager.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/AbstractSiteManager.java Fri Feb 6 17:55:28 2009
@@ -21,9 +21,6 @@
import java.util.Arrays;
import java.util.Comparator;
-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.lenya.cms.publication.DocumentFactory;
@@ -32,23 +29,7 @@
*
* @version $Id$
*/
-public abstract class AbstractSiteManager extends AbstractLogEnabled implements SiteManager, Serviceable {
-
- protected 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;
- }
-
- /**
- * Ctor.
- * @param manager The service manager.
- */
- public AbstractSiteManager() {
- }
+public abstract class AbstractSiteManager extends AbstractLogEnabled implements SiteManager {
/**
* @see org.apache.lenya.cms.site.SiteManager#sortAscending(org.apache.lenya.cms.publication.util.DocumentSet)
@@ -57,7 +38,7 @@
if (nodes.length > 0) {
DocumentFactory map = nodes[0].getStructure().getPublication().getFactory();
- if (!check(map, new NodeSet(this.manager, nodes))) {
+ if (!check(map, new NodeSet(nodes))) {
throw new SiteException("The dependence relation is not a strict partial order!");
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteUtil.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/site/SiteUtil.java Fri Feb 6 17:55:28 2009
@@ -20,8 +20,6 @@
import java.util.HashSet;
import java.util.Set;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentLocator;
@@ -50,8 +48,8 @@
SiteNode[] subsite;
try {
String hint = node.getStructure().getPublication().getSiteManagerHint();
- siteManager = (SiteManager) WebAppContextUtils.getCurrentWebApplicationContext().getBean(
- SiteManager.class.getName() + "/" + hint);
+ siteManager = (SiteManager) WebAppContextUtils.getCurrentWebApplicationContext()
+ .getBean(SiteManager.class.getName() + "/" + hint);
DocumentFactory map = node.getStructure().getPublication().getFactory();
Set nodes = new HashSet();
@@ -72,30 +70,21 @@
/**
* @see org.apache.lenya.cms.site.SiteManager#getAvailableLocator(DocumentFactory,
* DocumentLocator)
- * @param manager The service manager.
* @param factory The factory.
* @param locator The locator.
* @return A document.
* @throws SiteException if an error occurs.
*/
- public static DocumentLocator getAvailableLocator(ServiceManager manager,
- DocumentFactory factory, DocumentLocator locator) throws SiteException {
- ServiceSelector selector = null;
+ public static DocumentLocator getAvailableLocator(DocumentFactory factory,
+ DocumentLocator locator) throws SiteException {
SiteManager siteManager = null;
try {
- selector = (ServiceSelector) manager.lookup(SiteManager.ROLE + "Selector");
Publication pub = factory.getPublication(locator.getPublicationId());
- siteManager = (SiteManager) selector.select(pub.getSiteManagerHint());
+ siteManager = (SiteManager) WebAppContextUtils.getCurrentWebApplicationContext()
+ .getBean(SiteManager.ROLE + "/" + pub.getSiteManagerHint());
return siteManager.getAvailableLocator(factory, locator);
} catch (Exception e) {
throw new SiteException(e);
- } finally {
- if (selector != null) {
- if (siteManager != null) {
- selector.release(siteManager);
- }
- manager.release(selector);
- }
}
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/DocumentWorkflowable.java Fri Feb 6 17:55:28 2009
@@ -27,7 +27,6 @@
import java.util.SortedMap;
import java.util.TreeMap;
-import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.util.AbstractLogEnabled;
import org.apache.commons.logging.Log;
import org.apache.lenya.ac.Identity;
@@ -55,26 +54,16 @@
* @param document The document.
* @param logger The logger.
*/
- public DocumentWorkflowable(ServiceManager manager, Document document, Log logger) {
+ public DocumentWorkflowable(Document document, Log logger) {
if (session.getIdentity() == null) {
throw new IllegalArgumentException("The session must have an identity.");
}
this.document = document;
this.session = session;
- this.manager = manager;
}
private Session session;
- private ServiceManager manager;
-
- /**
- * @return The service manager.
- */
- public ServiceManager getServiceManager() {
- return this.manager;
- }
-
/**
* @return The repository session.
*/
@@ -184,7 +173,7 @@
addToMetaData(string);
WorkflowEventDescriptor descriptor = new WorkflowEventDescriptor(version);
- RepositoryEvent event = RepositoryEventFactory.createEvent(this.manager, getDocument(),
+ RepositoryEvent event = RepositoryEventFactory.createEvent(getDocument(),
getLogger(), descriptor);
getDocument().getRepositoryNode().getSession().enqueueEvent(event);
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/RoleCondition.java Fri Feb 6 17:55:28 2009
@@ -24,8 +24,7 @@
import java.util.Iterator;
import java.util.Set;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.lenya.ac.AccessController;
import org.apache.lenya.ac.AccessControllerResolver;
import org.apache.lenya.ac.AccreditableManager;
@@ -60,6 +59,13 @@
}
}
+ protected AccessControllerResolver getAccessControllerResolver() {
+ return (AccessControllerResolver) WebAppContextUtils.getCurrentWebApplicationContext()
+ .getBean(
+ AccessControllerResolver.ROLE + "/"
+ + AccessControllerResolver.DEFAULT_RESOLVER);
+ }
+
/**
* Returns if the condition is complied in a certain situation. The condition is complied when
* the current user has the role that is required by the RoleCondition.
@@ -69,17 +75,11 @@
public boolean isComplied(Workflow workflow, Workflowable instance) {
DocumentWorkflowable workflowable = (DocumentWorkflowable) instance;
- ServiceManager manager = workflowable.getServiceManager();
String url = workflowable.getDocument().getCanonicalWebappURL();
- ServiceSelector selector = null;
- AccessControllerResolver acResolver = null;
+ AccessControllerResolver acResolver = getAccessControllerResolver();
AccessController accessController = null;
try {
-
- selector = (ServiceSelector) manager.lookup(AccessControllerResolver.ROLE + "Selector");
- acResolver = (AccessControllerResolver) selector
- .select(AccessControllerResolver.DEFAULT_RESOLVER);
accessController = acResolver.resolveAccessController(url);
PolicyManager policyManager = accessController.getPolicyManager();
@@ -107,14 +107,8 @@
} catch (final Exception e) {
throw new RuntimeException(e);
} finally {
- if (selector != null) {
- if (acResolver != null) {
- if (accessController != null) {
- acResolver.release(accessController);
- }
- selector.release(acResolver);
- }
- manager.release(selector);
+ if (accessController != null) {
+ acResolver.release(accessController);
}
}
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/cms/workflow/WorkflowUtil.java Fri Feb 6 17:55:28 2009
@@ -17,8 +17,7 @@
*/
package org.apache.lenya.cms.workflow;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.commons.logging.Log;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.util.DocumentSet;
@@ -38,32 +37,20 @@
/**
* Invokes a workflow event on a document. This is the same as
* <code>invoke(Document, String, true)</code>.
- * @param manager The service manager.
* @param logger The logger.
* @param document The document.
* @param event The name of the event.
* @throws WorkflowException if the event could not be invoked in the current situation.
*/
- public static void invoke(ServiceManager manager, Log logger, Document document, String event)
- throws WorkflowException {
- WorkflowManager wfManager = null;
- try {
- wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = getWorkflowable(manager, logger, document);
- wfManager.invoke(workflowable, event);
- } catch (ServiceException e) {
- throw new WorkflowException(e);
- } finally {
- if (wfManager != null) {
- manager.release(wfManager);
- }
- }
+ public static void invoke(Log logger, Document document, String event) throws WorkflowException {
+ WorkflowManager wfManager = getWorkflowManager();
+ Workflowable workflowable = getWorkflowable(logger, document);
+ wfManager.invoke(workflowable, event);
}
/**
* Invokes a workflow event on a document.
- * @param manager The service manager.
* @param logger The logger.
* @param document The document.
* @param event The name of the event.
@@ -72,26 +59,15 @@
* set to <code>false</code>, non-supporting documents are ignored.
* @throws WorkflowException if the event could not be invoked in the current situation.
*/
- public static void invoke(ServiceManager manager, Log logger, Document document, String event,
- boolean force) throws WorkflowException {
- WorkflowManager wfManager = null;
- try {
- wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = getWorkflowable(manager, logger, document);
- wfManager.invoke(workflowable, event, force);
- } catch (ServiceException e) {
- throw new WorkflowException(e);
- } finally {
- if (wfManager != null) {
- manager.release(wfManager);
- }
- }
-
+ public static void invoke(Log logger, Document document, String event, boolean force)
+ throws WorkflowException {
+ WorkflowManager wfManager = getWorkflowManager();
+ Workflowable workflowable = getWorkflowable(logger, document);
+ wfManager.invoke(workflowable, event, force);
}
/**
* Invokes a workflow event on a document set.
- * @param manager The service manager.
* @param logger The logger.
* @param documentSet The document.
* @param event The event.
@@ -101,57 +77,37 @@
* @throws WorkflowException if <code>force</code> is set to <code>true</code> and a document
* does not support the workflow event.
*/
- public static void invoke(ServiceManager manager, Log logger, DocumentSet documentSet,
- String event, boolean force) throws WorkflowException {
- WorkflowManager wfManager = null;
- try {
- wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-
- Document[] documents = documentSet.getDocuments();
- for (int i = 0; i < documents.length; i++) {
- Workflowable workflowable = new DocumentWorkflowable(manager, documents[i], logger);
- wfManager.invoke(workflowable, event, force);
- }
-
- } catch (ServiceException e) {
- throw new WorkflowException(e);
- } finally {
- if (wfManager != null) {
- manager.release(wfManager);
- }
+ public static void invoke(Log logger, DocumentSet documentSet, String event, boolean force)
+ throws WorkflowException {
+ WorkflowManager wfManager = getWorkflowManager();
+ Document[] documents = documentSet.getDocuments();
+ for (int i = 0; i < documents.length; i++) {
+ Workflowable workflowable = new DocumentWorkflowable(documents[i], logger);
+ wfManager.invoke(workflowable, event, force);
}
+ }
+ protected static WorkflowManager getWorkflowManager() {
+ return (WorkflowManager) WebAppContextUtils.getCurrentWebApplicationContext().getBean(
+ WorkflowManager.ROLE);
}
/**
* Checks if an event can be invoked on a document.
- * @param manager The service manager.
* @param logger The logger.
* @param document The document.
* @param event The event.
* @return A boolean value.
* @throws WorkflowException
*/
- public static boolean canInvoke(ServiceManager manager, Log logger, Document document,
- String event) throws WorkflowException {
- WorkflowManager wfManager = null;
- try {
- wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = new DocumentWorkflowable(manager, document, logger);
- return wfManager.canInvoke(workflowable, event);
- } catch (ServiceException e) {
- throw new WorkflowException(e);
- } finally {
- if (wfManager != null) {
- manager.release(wfManager);
- }
- }
-
+ public static boolean canInvoke(Log logger, Document document, String event)
+ throws WorkflowException {
+ Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ return getWorkflowManager().canInvoke(workflowable, event);
}
/**
* Checks if an event can be invoked on all documents in a set.
- * @param manager The service manager.
* @param session The repository session.
* @param logger The logger.
* @param documents The documents.
@@ -159,93 +115,57 @@
* @return if an error occurs.
* @throws WorkflowException
*/
- public static boolean canInvoke(ServiceManager manager, Session session, Log logger,
- DocumentSet documents, String event) throws WorkflowException {
- WorkflowManager wfManager = null;
- try {
- wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
-
- boolean canInvoke = true;
- Document[] documentArray = documents.getDocuments();
- for (int i = 0; i < documentArray.length; i++) {
- Workflowable workflowable = new DocumentWorkflowable(manager, documentArray[i],
- logger);
- canInvoke = canInvoke && wfManager.canInvoke(workflowable, event);
- }
- return canInvoke;
-
- } catch (ServiceException e) {
- throw new WorkflowException(e);
- } finally {
- if (wfManager != null) {
- manager.release(wfManager);
- }
+ public static boolean canInvoke(Session session, Log logger, DocumentSet documents, String event)
+ throws WorkflowException {
+ WorkflowManager wfManager = getWorkflowManager();
+
+ boolean canInvoke = true;
+ Document[] documentArray = documents.getDocuments();
+ for (int i = 0; i < documentArray.length; i++) {
+ Workflowable workflowable = new DocumentWorkflowable(documentArray[i], logger);
+ canInvoke = canInvoke && wfManager.canInvoke(workflowable, event);
}
+ return canInvoke;
}
/**
* Returns if a document has a workflow.
- * @param manager The service manager.
- * @param session The repository session.
* @param logger The logger.
* @param document The document.
* @return A boolean value.
* @throws WorkflowException if an error occurs.
*/
- public static boolean hasWorkflow(ServiceManager manager, Log logger, Document document)
- throws WorkflowException {
- WorkflowManager wfManager = null;
- try {
- wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = new DocumentWorkflowable(manager, document, logger);
- return wfManager.hasWorkflow(workflowable);
- } catch (ServiceException e) {
- throw new WorkflowException(e);
- } finally {
- if (wfManager != null) {
- manager.release(wfManager);
- }
- }
+ public static boolean hasWorkflow(Log logger, Document document) throws WorkflowException {
+ Workflowable workflowable = new DocumentWorkflowable(document, logger);
+ return getWorkflowManager().hasWorkflow(workflowable);
}
/**
* Returns the workflow schema of a document.
- * @param manager The service manager.
* @param logger The logger.
* @param document The document.
* @return A workflow schema.
* @throws WorkflowException if an error occurs.
*/
- public static Workflow getWorkflowSchema(ServiceManager manager, Log logger, Document document)
+ public static Workflow getWorkflowSchema(Log logger, Document document)
throws WorkflowException {
- WorkflowManager wfManager = null;
- try {
- wfManager = (WorkflowManager) manager.lookup(WorkflowManager.ROLE);
- Workflowable workflowable = getWorkflowable(manager, logger, document);
- if (wfManager.hasWorkflow(workflowable)) {
- return wfManager.getWorkflowSchema(workflowable);
- } else {
- throw new WorkflowException("The document [" + document + "] has no workflow!");
- }
- } catch (ServiceException e) {
- throw new WorkflowException(e);
- } finally {
- if (wfManager != null) {
- manager.release(wfManager);
- }
+ WorkflowManager wfManager = getWorkflowManager();
+ Workflowable workflowable = getWorkflowable(logger, document);
+ if (wfManager.hasWorkflow(workflowable)) {
+ return wfManager.getWorkflowSchema(workflowable);
+ } else {
+ throw new WorkflowException("The document [" + document + "] has no workflow!");
}
}
/**
* Returns a workflowable for a document.
- * @param manager The service manager.
* @param logger The logger.
* @param document The document.
* @return A workflowable.
*/
- public static Workflowable getWorkflowable(ServiceManager manager, Log logger, Document document) {
- Workflowable workflowable = new DocumentWorkflowable(manager, document, logger);
- return workflowable;
+ public static Workflowable getWorkflowable(Log logger, Document document) {
+ return new DocumentWorkflowable(document, logger);
}
}
\ No newline at end of file
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/util/ServletHelper.java Fri Feb 6 17:55:28 2009
@@ -29,10 +29,10 @@
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.excalibur.source.SourceNotFoundException;
+import org.apache.excalibur.source.SourceResolver;
import org.apache.lenya.cms.cocoon.source.SourceUtil;
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
@@ -118,18 +118,18 @@
/**
* Returns the value of enable-uploads in web.xml
- * @param manager The Service Manager.
* @return true if enable upload is true or not set in web.xml, else false
*/
- public static synchronized boolean isUploadEnabled(ServiceManager manager)
- throws SourceNotFoundException, ServiceException, ParserConfigurationException,
- SAXException, IOException, TransformerException {
+ public static synchronized boolean isUploadEnabled() throws SourceNotFoundException,
+ ParserConfigurationException, SAXException, IOException, TransformerException {
if (ServletHelper.uploadEnabled == null) {
Node node;
String webappUrl = "context://WEB-INF/web.xml";
- Document document = SourceUtil.readDOM(webappUrl, manager);
+ SourceResolver resolver = (SourceResolver) WebAppContextUtils
+ .getCurrentWebApplicationContext().getBean(SourceResolver.ROLE);
+ Document document = SourceUtil.readDOM(webappUrl, resolver);
Element root = document.getDocumentElement();
node = XPathAPI.selectSingleNode(root,
"/web-app/servlet/init-param[param-name='enable-uploads']/param-value/text()");
Modified: lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/ValidationUtil.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/ValidationUtil.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/ValidationUtil.java (original)
+++ lenya/trunk/org.apache.lenya.core.api/src/main/java/org/apache/lenya/xml/ValidationUtil.java Fri Feb 6 17:55:28 2009
@@ -24,6 +24,7 @@
import org.apache.avalon.framework.service.ServiceManager;
import org.apache.cocoon.components.validation.Validator;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.cocoon.xml.dom.DOMStreamer;
import org.apache.lenya.cms.publication.Document;
import org.xml.sax.ContentHandler;
@@ -35,66 +36,49 @@
public class ValidationUtil {
/**
- * @param manager The service manager.
* @param document The document to validate.
* @param handler The SAX error handler.
* @throws Exception if an error occurs.
*/
- public static void validate(ServiceManager manager, Document document, ErrorHandler handler)
- throws Exception {
-
+ public static void validate(Document document, ErrorHandler handler) throws Exception {
org.w3c.dom.Document xmlDoc = DocumentHelper.readDocument(document.getInputStream());
- validate(manager, xmlDoc, document.getResourceType().getSchema(), handler);
+ validate(xmlDoc, document.getResourceType().getSchema(), handler);
}
/**
- * @param manager The service manager.
* @param xmlDoc The XML document.
* @param schema The schema to use.
* @param handler The SAX error handler.
* @throws Exception if an error occurs.
*/
- public static void validate(ServiceManager manager, org.w3c.dom.Document xmlDoc, Schema schema,
- ErrorHandler handler) throws Exception {
- Validator validator = null;
- try {
- validator = (Validator) manager.lookup(Validator.ROLE);
- ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(),
- handler);
- new DOMStreamer(validatorHandler).stream(xmlDoc);
- } finally {
- if (validator != null) {
- manager.release(validator);
- }
- }
+ public static void validate(org.w3c.dom.Document xmlDoc, Schema schema, ErrorHandler handler)
+ throws Exception {
+ Validator validator = getValidator();
+ ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(), handler);
+ new DOMStreamer(validatorHandler).stream(xmlDoc);
+ }
+
+ protected static Validator getValidator() {
+ Validator validator = (Validator) WebAppContextUtils.getCurrentWebApplicationContext()
+ .getBean(Validator.ROLE);
+ return validator;
}
/**
- * @param manager The service manager.
* @param source The source to validate.
* @param schema The schema to use.
* @param handler The SAX error handler.
* @throws Exception if an error occurs.
*/
- public static void validate(ServiceManager manager, Source source, Schema schema,
- ErrorHandler handler) throws Exception {
+ public static void validate(Source source, Schema schema, ErrorHandler handler)
+ throws Exception {
+ Validator validator = getValidator();
+ ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(), handler);
- Validator validator = null;
- try {
- validator = (Validator) manager.lookup(Validator.ROLE);
- ContentHandler validatorHandler = validator.getValidationHandler(schema.getURI(),
- handler);
-
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
- SAXResult result = new SAXResult(validatorHandler);
- transformer.transform(source, result);
-
- } finally {
- if (validator != null) {
- manager.release(validator);
- }
- }
+ Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ SAXResult result = new SAXResult(validatorHandler);
+ transformer.transform(source, result);
}
}
Modified: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java (original)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/metadata/ConfigurableElementSet.java Fri Feb 6 17:55:28 2009
@@ -21,24 +21,19 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configurable;
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.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
import org.apache.cocoon.util.AbstractLogEnabled;
/**
* Avalon-based element set.
*/
-public class ConfigurableElementSet extends AbstractLogEnabled implements ElementSet, Configurable,
- ThreadSafe, Initializable, Serviceable {
+public class ConfigurableElementSet extends AbstractLogEnabled implements ElementSet, Configurable {
private String namespaceUri;
private Map elements = new HashMap();
+ private MetaDataRegistry registry;
public void configure(Configuration config) throws ConfigurationException {
@@ -55,15 +50,13 @@
int action;
if (actionOnCopy.equalsIgnoreCase("copy")) {
action = Element.ONCOPY_COPY;
- }
- else if (actionOnCopy.equalsIgnoreCase("ignore")) {
+ } else if (actionOnCopy.equalsIgnoreCase("ignore")) {
action = Element.ONCOPY_IGNORE;
- }
- else if (actionOnCopy.equalsIgnoreCase("delete")) {
+ } else if (actionOnCopy.equalsIgnoreCase("delete")) {
action = Element.ONCOPY_DELETE;
- }
- else {
- throw new ConfigurationException("The action [" + actionOnCopy + "] is not supported.");
+ } else {
+ throw new ConfigurationException("The action [" + actionOnCopy
+ + "] is not supported.");
}
try {
element.setActionOnCopy(action);
@@ -92,23 +85,9 @@
return this.elements.keySet().contains(name);
}
- public void initialize() throws Exception {
- MetaDataRegistry registry = null;
- try {
- registry = (MetaDataRegistry) this.manager.lookup(MetaDataRegistry.ROLE);
- registry.register(getNamespaceUri(), this);
- }
- finally {
- if (registry != null) {
- this.manager.release(registry);
- }
- }
- }
-
- private ServiceManager manager;
-
- public void service(ServiceManager manager) throws ServiceException {
- this.manager = manager;
+ public void setRegistry(MetaDataRegistry registry) throws MetaDataException {
+ this.registry = registry;
+ registry.register(getNamespaceUri(), this);
}
}
Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java?rev=741654&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/RepositoryImpl.java Fri Feb 6 17:55:28 2009
@@ -0,0 +1,46 @@
+/*
+ * 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.publication;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.springframework.util.Assert;
+
+public class RepositoryImpl implements Repository {
+
+ private RepositoryManager repositoryManager;
+
+ public Session getSession(HttpServletRequest request) {
+ Assert.notNull(request, "request");
+ try {
+ org.apache.lenya.cms.repository.Session repoSession = RepositoryUtil.getSession(
+ this.repositoryManager, request);
+ } catch (RepositoryException e) {
+ throw new RuntimeException(e);
+ }
+ return null;
+ }
+
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+}
Modified: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java (original)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/ResourceTypeSelector.java Fri Feb 6 17:55:28 2009
@@ -17,25 +17,20 @@
*/
package org.apache.lenya.cms.publication;
-import org.apache.avalon.framework.component.Component;
-import org.apache.avalon.framework.service.ServiceException;
-import org.apache.cocoon.core.container.spring.avalon.AvalonServiceSelector;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
/**
* Specifies selector for resource types.
*/
-public class ResourceTypeSelector extends AvalonServiceSelector {
+public class ResourceTypeSelector {
- public ResourceTypeSelector(String r) {
- super(r);
- }
-
- public Component select(Object hint) throws ServiceException {
- ResourceType type = (ResourceType) super.select(hint);
+ public ResourceType getResourceType(String name) {
+ ResourceType type = (ResourceType) WebAppContextUtils.getCurrentWebApplicationContext()
+ .getBean(ResourceType.ROLE + "/" + name);
if (type != null) {
- type.setName((String) hint);
+ type.setName(name);
}
- return (Component) type;
+ return type;
}
}
Added: lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java?rev=741654&view=auto
==============================================================================
--- lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java (added)
+++ lenya/trunk/org.apache.lenya.core.impl/src/main/java/org/apache/lenya/cms/publication/SessionImpl.java Fri Feb 6 17:55:28 2009
@@ -0,0 +1,59 @@
+/*
+ * 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.publication;
+
+import org.springframework.util.Assert;
+
+public class SessionImpl implements Session {
+
+ public SessionImpl(RepositoryImpl repository,
+ org.apache.lenya.cms.repository.Session repoSession) {
+ Assert.notNull(repository, "repository");
+ Assert.notNull(repoSession, "repository session");
+ this.repository = repository;
+ this.repositorySession = repoSession;
+ }
+
+ private RepositoryImpl repository;
+ private org.apache.lenya.cms.repository.Session repositorySession;
+ private DocumentFactory documentFactory;
+
+ public Publication getPublication(String id) {
+ try {
+ return getDocumentFactory().getPublication(id);
+ } catch (PublicationException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public Repository getRepository() {
+ return this.repository;
+ }
+
+ public DocumentFactory getDocumentFactory() {
+ if (this.documentFactory == null) {
+ this.documentFactory = DocumentUtil.createDocumentFactory(this.repositorySession);
+ }
+ return this.documentFactory;
+ }
+
+ public boolean existsPublication(String id) {
+ return getDocumentFactory().existsPublication(id);
+ }
+
+}
Modified: lenya/trunk/org.apache.lenya.core.janitor/pom.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.janitor/pom.xml?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.janitor/pom.xml (original)
+++ lenya/trunk/org.apache.lenya.core.janitor/pom.xml Fri Feb 6 17:55:28 2009
@@ -16,6 +16,10 @@
<name>Apache Lenya Core Janitor</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.core.janitor/src/main/java/org/apache/lenya/cms/janitor/ContentJanitor.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.janitor/src/main/java/org/apache/lenya/cms/janitor/ContentJanitor.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.janitor/src/main/java/org/apache/lenya/cms/janitor/ContentJanitor.java (original)
+++ lenya/trunk/org.apache.lenya.core.janitor/src/main/java/org/apache/lenya/cms/janitor/ContentJanitor.java Fri Feb 6 17:55:28 2009
@@ -19,8 +19,10 @@
import java.io.File;
-import org.apache.cocoon.environment.Request;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.lenya.cms.cocoon.source.SourceUtil;
import org.apache.lenya.cms.observation.AbstractRepositoryListener;
import org.apache.lenya.cms.observation.DocumentEvent;
@@ -28,11 +30,16 @@
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.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
/**
* The content janitor cleans up empty directories after a document is removed.
*/
public class ContentJanitor extends AbstractRepositoryListener {
+
+ private RepositoryManager repositoryManager;
public void eventFired(RepositoryEvent repoEvent) {
@@ -45,22 +52,27 @@
return;
}
- ContextUtility util = null;
try {
- util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
- Request request = util.getRequest();
- DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
+ ProcessInfoProvider process = (ProcessInfoProvider) WebAppContextUtils
+ .getCurrentWebApplicationContext().getBean(ProcessInfoProvider.ROLE);
+ HttpServletRequest request = process.getRequest();
+ Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+ DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
Publication pub = factory.getPublication(event.getPublicationId());
File contentFile = pub.getContentDirectory(event.getArea());
String contentUri = contentFile.toURI().toString();
SourceUtil.deleteEmptyCollections(contentUri, this.manager);
} catch (Exception e) {
throw new RuntimeException(e);
- } finally {
- if (util != null) {
- this.manager.release(util);
- }
}
}
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ public RepositoryManager getRepositoryManager() {
+ return repositoryManager;
+ }
+
}
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/ProxyModule.java Fri Feb 6 17:55:28 2009
@@ -23,48 +23,45 @@
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.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.linking.LinkRewriter;
import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
import org.apache.lenya.cms.repository.RepositoryException;
+import org.apache.lenya.cms.repository.RepositoryManager;
import org.apache.lenya.cms.repository.RepositoryUtil;
import org.apache.lenya.cms.repository.Session;
/**
* <p>
- * Input module for getting the base URL which may be prepended to internal URLs
- * to construct links. The functionality corresponds to the
- * {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer} with one
- * exception: If the <em>webappUrl</em> parameter is an empty string, the root
- * proxy URL (or the context prefix, resp.) is returned.
+ * Input module for getting the base URL which may be prepended to internal URLs to construct links.
+ * The functionality corresponds to the
+ * {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer} with one exception: If the
+ * <em>webappUrl</em> parameter is an empty string, the root proxy URL (or the context prefix,
+ * resp.) is returned.
* </p>
* <p>
* Usage: <code>{proxy:{webappUrl}}</code>
* </p>
* <p>
- * The module can be configured to use absolute or relative URLs in the same way
- * as the {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer}.
+ * The module can be configured to use absolute or relative URLs in the same way as the
+ * {@link org.apache.lenya.cms.cocoon.transformation.ProxyTransformer}.
* </p>
*/
-public class ProxyModule extends AbstractInputModule implements Serviceable {
+public class ProxyModule extends AbstractInputModule {
protected static final String ATTRIBUTE_TYPE = "type";
protected static final String URL_TYPE_ABSOLUTE = "absolute";
protected static final String URL_TYPE_RELATIVE = "relative";
protected static final String PARAMETER_URLS = "urls";
- private ServiceManager manager;
private boolean relativeUrls;
+ private RepositoryManager repositoryManager;
/**
* @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 {
@@ -92,9 +89,9 @@
protected String rewrite(Request request, String url) throws RepositoryException,
ConfigurationException {
- Session session = RepositoryUtil.getSession(this.manager, request);
- LinkRewriter rewriter = new OutgoingLinkRewriter(this.manager, session, request
- .getRequestURI(), request.isSecure(), false, this.relativeUrls);
+ Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+ LinkRewriter rewriter = new OutgoingLinkRewriter(session, request.getRequestURI(), request
+ .isSecure(), false, this.relativeUrls);
if (!rewriter.matches(url)) {
throw new ConfigurationException("The URL [" + url + "] can't be rewritten!");
}
@@ -112,8 +109,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 {
@@ -121,13 +117,6 @@
return objects;
}
- /**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager manager) throws ServiceException {
- this.manager = manager;
- }
-
public void configure(Configuration conf) throws ConfigurationException {
super.configure(conf);
Configuration urlConfig = conf.getChild(PARAMETER_URLS, false);
@@ -136,7 +125,7 @@
setUrlType(value);
}
}
-
+
protected void setUrlType(String value) throws ConfigurationException {
if (value.equals(URL_TYPE_RELATIVE)) {
this.relativeUrls = true;
@@ -148,4 +137,12 @@
}
}
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ public RepositoryManager getRepositoryManager() {
+ return repositoryManager;
+ }
+
}
\ No newline at end of file
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/components/modules/input/UuidToUrlModule.java Fri Feb 6 17:55:28 2009
@@ -21,9 +21,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.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;
@@ -31,22 +28,26 @@
import org.apache.lenya.cms.linking.UuidToUrlRewriter;
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.util.ServletHelper;
/**
* Transform lenya-document: URLs to web application URLs.
* @see UuidToUrlRewriter
*/
-public class UuidToUrlModule extends AbstractInputModule implements Serviceable {
+public class UuidToUrlModule extends AbstractInputModule {
+
+ protected RepositoryManager repositoryManager;
+ protected LinkResolver linkResolver;
- private ServiceManager manager;
-
public Object getAttribute(String name, Configuration modeConf, Map objectModel)
throws ConfigurationException {
Request request = ObjectModelHelper.getRequest(objectModel);
try {
- DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
- LinkResolver linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
+ Session session = RepositoryUtil.getSession(this.repositoryManager, request);
+ DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
String currentUrl = ServletHelper.getWebappURI(request);
UuidToUrlRewriter rewriter = new UuidToUrlRewriter(currentUrl, linkResolver, factory);
@@ -61,8 +62,12 @@
}
}
- public void service(ServiceManager manager) throws ServiceException {
- this.manager = manager;
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ public void setLinkResolver(LinkResolver linkResolver) {
+ this.linkResolver = linkResolver;
}
}
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/source/DocumentSourceFactory.java Fri Feb 6 17:55:28 2009
@@ -21,19 +21,11 @@
import java.net.MalformedURLException;
import java.util.Map;
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-import org.apache.avalon.framework.context.Context;
-import org.apache.avalon.framework.context.ContextException;
-import org.apache.avalon.framework.context.Contextualizable;
+import javax.servlet.http.HttpServletRequest;
+
import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
-import org.apache.avalon.framework.service.Serviceable;
-import org.apache.avalon.framework.thread.ThreadSafe;
-import org.apache.cocoon.components.ContextHelper;
-import org.apache.cocoon.environment.ObjectModelHelper;
-import org.apache.cocoon.environment.Request;
+import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.cocoon.util.AbstractLogEnabled;
import org.apache.excalibur.source.Source;
import org.apache.excalibur.source.SourceException;
@@ -48,6 +40,9 @@
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
import org.apache.lenya.util.Query;
import org.apache.lenya.util.ServletHelper;
@@ -61,54 +56,30 @@
* </p>
* <ul>
* <li><strong>format</strong> - the resource type format</li>
- * <li><strong>session</strong> - the session.
- * To use the session of the current usecase, specify <code>session=usecase</code></li>
+ * <li><strong>session</strong> - the session. To use the session of the current usecase, specify
+ * <code>session=usecase</code></li>
* </ul>
*/
-public class DocumentSourceFactory extends AbstractLogEnabled implements SourceFactory, ThreadSafe,
- Contextualizable, Serviceable, Configurable {
+public class DocumentSourceFactory extends AbstractLogEnabled implements SourceFactory {
/**
* The URI scheme.
*/
public static final String SCHEME = "lenya-document";
- private Context context;
- private ServiceManager manager;
-
- /**
- * Used for resolving the object model.
- *
- * @see org.apache.avalon.framework.context.Contextualizable#contextualize(org.apache.avalon.framework.context.Context)
- */
- public void contextualize(Context context) throws ContextException {
- this.context = context;
- }
-
private SourceResolver sourceResolver;
+ private LinkResolver linkResolver;
+ private RepositoryManager repositoryManager;
/**
- * @see org.apache.avalon.framework.service.Serviceable#service(org.apache.avalon.framework.service.ServiceManager)
- */
- public void service(ServiceManager manager) throws ServiceException {
- this.manager = manager;
- }
-
- /**
- * @see org.apache.avalon.framework.configuration.Configurable#configure(org.apache.avalon.framework.configuration.Configuration)
- */
- public void configure(Configuration configuration) throws ConfigurationException {
- }
-
- /**
- * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String,
- * java.util.Map)
+ * @see org.apache.excalibur.source.SourceFactory#getSource(java.lang.String, java.util.Map)
*/
public Source getSource(String location, Map parameters) throws MalformedURLException,
IOException, SourceException {
-
- Map objectModel = ContextHelper.getObjectModel(this.context);
- Request request = ObjectModelHelper.getRequest(objectModel);
+
+ ProcessInfoProvider process = (ProcessInfoProvider) WebAppContextUtils
+ .getCurrentWebApplicationContext().getBean(ProcessInfoProvider.ROLE);
+ HttpServletRequest request = process.getRequest();
String[] uriAndQuery = location.split("\\?");
@@ -118,26 +89,21 @@
queryString = uriAndQuery[1];
}
- LinkResolver resolver = null;
try {
- if (this.sourceResolver == null) {
- this.sourceResolver = (SourceResolver) this.manager.lookup(SourceResolver.ROLE);
- }
- resolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
- DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
+ Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+ DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
String webappUrl = ServletHelper.getWebappURI(request);
LinkTarget target;
if (factory.isDocument(webappUrl)) {
Document currentDoc = factory.getFromURL(webappUrl);
- target = resolver.resolve(currentDoc, linkUri);
- }
- else {
+ target = getLinkResolver().resolve(currentDoc, linkUri);
+ } else {
Link link = new Link(linkUri);
contextualize(link, webappUrl);
- target = resolver.resolve(factory, link.getUri());
+ target = getLinkResolver().resolve(factory, link.getUri());
}
-
+
if (!target.exists()) {
throw new SourceNotFoundException("Source not found: [" + location + "]");
}
@@ -204,4 +170,28 @@
this.sourceResolver.release(source);
}
+ public void setLinkResolver(LinkResolver linkResolver) {
+ this.linkResolver = linkResolver;
+ }
+
+ public LinkResolver getLinkResolver() {
+ return linkResolver;
+ }
+
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ public RepositoryManager getRepositoryManager() {
+ return repositoryManager;
+ }
+
+ public SourceResolver getSourceResolver() {
+ return sourceResolver;
+ }
+
+ public void setSourceResolver(SourceResolver sourceResolver) {
+ this.sourceResolver = sourceResolver;
+ }
+
}
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/IncomingProxyTransformer.java Fri Feb 6 17:55:28 2009
@@ -30,6 +30,7 @@
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.repository.RepositoryManager;
import org.apache.lenya.cms.repository.RepositoryUtil;
import org.apache.lenya.cms.repository.Session;
import org.xml.sax.SAXException;
@@ -41,6 +42,7 @@
public class IncomingProxyTransformer extends AbstractLinkTransformer {
private LinkRewriter rewriter;
+ private RepositoryManager repositoryManager;
public void setup(SourceResolver _resolver, Map _objectModel, String _source,
Parameters params) throws ProcessingException, SAXException, IOException {
@@ -48,8 +50,8 @@
Request request = ObjectModelHelper.getRequest(_objectModel);
try {
- Session session = RepositoryUtil.getSession(this.manager, request);
- DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
+ Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+ DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
String webappUrl = getWebappUrl(params, objectModel);
URLInformation info = new URLInformation(webappUrl);
String pubId = info.getPublicationId();
@@ -68,4 +70,12 @@
this.rewriter = null;
}
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ public RepositoryManager getRepositoryManager() {
+ return repositoryManager;
+ }
+
}
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/ProxyTransformer.java Fri Feb 6 17:55:28 2009
@@ -29,9 +29,9 @@
import org.apache.cocoon.environment.SourceResolver;
import org.apache.lenya.cms.linking.LinkRewriter;
import org.apache.lenya.cms.linking.OutgoingLinkRewriter;
+import org.apache.lenya.cms.repository.RepositoryManager;
import org.apache.lenya.cms.repository.RepositoryUtil;
import org.apache.lenya.cms.repository.Session;
-import org.apache.lenya.util.ServletHelper;
import org.xml.sax.SAXException;
/**
@@ -39,8 +39,8 @@
* Proxy transformer.
* </p>
* <p>
- * The resulting URLs can either be absolute (default) or relative. You can
- * either configure this when declaring the transformer:
+ * The resulting URLs can either be absolute (default) or relative. You can either configure this
+ * when declaring the transformer:
* </p>
* <code><pre>
* <map:transformer ... >
@@ -65,9 +65,10 @@
private boolean relativeUrls = false;
private LinkRewriter rewriter;
+ private RepositoryManager repositoryManager;
- public void setup(SourceResolver resolver, Map objectModel, String source,
- Parameters params) throws ProcessingException, SAXException, IOException {
+ public void setup(SourceResolver resolver, Map objectModel, String source, Parameters params)
+ throws ProcessingException, SAXException, IOException {
super.setup(resolver, objectModel, source, params);
Request request = ObjectModelHelper.getRequest(objectModel);
@@ -75,10 +76,10 @@
if (params.isParameter(PARAMETER_URLS)) {
setUrlType(params.getParameter(PARAMETER_URLS));
}
- Session session = RepositoryUtil.getSession(this.manager, request);
+ Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
String webappUrl = getWebappUrl(params, objectModel);
- this.rewriter = new OutgoingLinkRewriter(this.manager, session, webappUrl,
- request.isSecure(), false, this.relativeUrls);
+ this.rewriter = new OutgoingLinkRewriter(session, webappUrl, request.isSecure(), false,
+ this.relativeUrls);
} catch (final Exception e) {
throw new RuntimeException(e);
}
@@ -113,4 +114,12 @@
this.rewriter = null;
}
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ public RepositoryManager getRepositoryManager() {
+ return repositoryManager;
+ }
+
}
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UrlToUuidTransformer.java Fri Feb 6 17:55:28 2009
@@ -30,6 +30,7 @@
import org.apache.lenya.cms.linking.UrlToUuidRewriter;
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.repository.RepositoryManager;
import org.apache.lenya.cms.repository.RepositoryUtil;
import org.apache.lenya.cms.repository.Session;
import org.xml.sax.SAXException;
@@ -48,6 +49,7 @@
public class UrlToUuidTransformer extends AbstractLinkTransformer {
private LinkRewriter rewriter;
+ private RepositoryManager repositoryManager;
/**
* @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
@@ -60,8 +62,8 @@
Request request = ObjectModelHelper.getRequest(_objectModel);
try {
- Session session = RepositoryUtil.getSession(this.manager, request);
- DocumentFactory factory = DocumentUtil.createDocumentFactory(this.manager, session);
+ Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
+ DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
this.rewriter = new UrlToUuidRewriter(factory);
} catch (final Exception e1) {
throw new ProcessingException(e1);
@@ -77,4 +79,12 @@
this.rewriter = null;
}
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ public RepositoryManager getRepositoryManager() {
+ return repositoryManager;
+ }
+
}
\ No newline at end of file
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/cocoon/transformation/UuidToUrlTransformer.java Fri Feb 6 17:55:28 2009
@@ -20,7 +20,6 @@
import java.io.IOException;
import java.util.Map;
-import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.ProcessingException;
import org.apache.cocoon.environment.ObjectModelHelper;
@@ -31,6 +30,9 @@
import org.apache.lenya.cms.linking.UuidToUrlRewriter;
import org.apache.lenya.cms.publication.DocumentFactory;
import org.apache.lenya.cms.publication.DocumentUtil;
+import org.apache.lenya.cms.repository.RepositoryManager;
+import org.apache.lenya.cms.repository.RepositoryUtil;
+import org.apache.lenya.cms.repository.Session;
import org.xml.sax.SAXException;
/**
@@ -40,10 +42,11 @@
*
* $Id: LinkRewritingTransformer.java,v 1.7 2004/03/16 11:12:16 gregor
*/
-public class UuidToUrlTransformer extends AbstractLinkTransformer implements Disposable {
+public class UuidToUrlTransformer extends AbstractLinkTransformer {
private UuidToUrlRewriter rewriter;
private LinkResolver linkResolver;
+ protected RepositoryManager repositoryManager;
public void setup(SourceResolver resolver, Map objectModel, String source,
Parameters params) throws ProcessingException, SAXException, IOException {
@@ -53,7 +56,8 @@
this.useIgnore = true;
try {
String currentUrl = getWebappUrl(params, objectModel);
- DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
+ Session session = RepositoryUtil.getSession(this.repositoryManager, request);
+ DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
this.linkResolver = (LinkResolver) this.manager.lookup(LinkResolver.ROLE);
this.rewriter = new UuidToUrlRewriter(currentUrl, this.linkResolver, factory);
@@ -84,4 +88,8 @@
this.rewriter = null;
}
+ public void setRepositoryManager(RepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
}
Modified: lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkConverter.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkConverter.java?rev=741654&r1=741653&r2=741654&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkConverter.java (original)
+++ lenya/trunk/org.apache.lenya.core.linking/src/main/java/org/apache/lenya/cms/linking/LinkConverter.java Fri Feb 6 17:55:28 2009
@@ -17,12 +17,11 @@
*/
package org.apache.lenya.cms.linking;
-import org.apache.avalon.framework.container.ContainerUtil;
import org.apache.avalon.framework.service.ServiceException;
-import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.processing.ProcessInfoProvider;
+import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.cocoon.util.AbstractLogEnabled;
import org.apache.commons.logging.Log;
-import org.apache.lenya.cms.cocoon.components.context.ContextUtility;
import org.apache.lenya.cms.publication.Document;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.ResourceType;
@@ -33,20 +32,16 @@
import org.w3c.dom.NodeList;
/**
- * Utility class to convert <code>lenya-document:</code> links from and to URL
- * links.
+ * Utility class to convert <code>lenya-document:</code> links from and to URL links.
*/
public class LinkConverter extends AbstractLogEnabled {
- private ServiceManager manager;
-
/**
* Creates a link converter.
- * @param manager The service manager.
* @param logger The logger.
*/
- public LinkConverter(ServiceManager manager, Log logger) {
- this.manager = manager;
+ public LinkConverter(Log logger) {
+ setLogger(logger);
}
/**
@@ -59,8 +54,8 @@
}
/**
- * Converts all URL-based links to UUID-based links. The link URLs can
- * originate from a different publication.
+ * Converts all URL-based links to UUID-based links. The link URLs can originate from a
+ * different publication.
* @param srcPub The publication where the content comes from.
* @param examinedDocument The document in the target publication.
* @param useContextPath If the request's context path should be considered.
@@ -83,7 +78,8 @@
} else {
Publication pub = examinedDocument.getPublication();
LinkRewriter incomingRewriter = new IncomingLinkRewriter(pub);
- LinkRewriter urlToUuidRewriter = new UrlToUuidRewriter(examinedDocument.getFactory());
+ LinkRewriter urlToUuidRewriter = new UrlToUuidRewriter(examinedDocument
+ .getFactory());
org.w3c.dom.Document xml = DocumentHelper.readDocument(examinedDocument
.getInputStream());
@@ -105,7 +101,8 @@
if (getLogger().isDebugEnabled()) {
getLogger().debug("Convert links: Check URL [" + url + "]");
}
- final String originalUrl = url.startsWith(prefix) ? url.substring(prefix.length()) : url;
+ final String originalUrl = url.startsWith(prefix) ? url.substring(prefix
+ .length()) : url;
final String srcPubUrl;
if (incomingRewriter.matches(originalUrl)) {
srcPubUrl = incomingRewriter.rewrite(originalUrl);
@@ -114,7 +111,8 @@
}
final String srcPubPrefix = "/" + srcPub.getId() + "/";
if (srcPubUrl.startsWith(srcPubPrefix)) {
- final String destPubUrl = "/" + pub.getId() + "/" + srcPubUrl.substring(srcPubPrefix.length());
+ final String destPubUrl = "/" + pub.getId() + "/"
+ + srcPubUrl.substring(srcPubPrefix.length());
if (urlToUuidRewriter.matches(destPubUrl)) {
String rewrittenUrl = urlToUuidRewriter.rewrite(destPubUrl);
attribute.setValue(rewrittenUrl);
@@ -134,17 +132,9 @@
}
protected String getContextPath() throws ServiceException {
- String prefix;
- ContextUtility ctxUtil = null;
- try {
- ctxUtil = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
- prefix = ctxUtil.getRequest().getContextPath();
- } finally {
- if (ctxUtil != null) {
- this.manager.release(ctxUtil);
- }
- }
- return prefix;
+ ProcessInfoProvider process = (ProcessInfoProvider) WebAppContextUtils.getCurrentWebApplicationContext().getBean(
+ ProcessInfoProvider.ROLE);
+ return process.getRequest().getContextPath();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org