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();
}
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.