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/09 22:04:27 UTC
svn commit: r742731 - in
/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms:
cocoon/transformation/ usecase/ usecase/gui/impl/ usecase/impl/
Author: andreas
Date: Mon Feb 9 21:04:26 2009
New Revision: 742731
URL: http://svn.apache.org/viewvc?rev=742731&view=rev
Log:
Simplify API, replace repository classes with publication classes for better SoC.
Modified:
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java
lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/cocoon/transformation/UsecaseMenuTransformer.java Mon Feb 9 21:04:26 2009
@@ -38,13 +38,9 @@
import org.apache.lenya.ac.Role;
import org.apache.lenya.cms.ac.PolicyUtil;
import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.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.cms.publication.Repository;
+import org.apache.lenya.cms.publication.Session;
import org.apache.lenya.cms.usecase.Usecase;
import org.apache.lenya.cms.usecase.UsecaseMessage;
import org.apache.lenya.cms.usecase.UsecaseResolver;
@@ -242,7 +238,7 @@
private Publication publication;
private AccessControllerResolver acResolver;
private String sourceUrl;
- private RepositoryManager repositoryManager;
+ private Repository repository;
/**
* @see org.apache.cocoon.sitemap.SitemapModelComponent#setup(org.apache.cocoon.environment.SourceResolver,
@@ -260,10 +256,8 @@
try {
this.roles = PolicyUtil.getRoles(this.request);
String webappUrl = ServletHelper.getWebappURI(this.request);
- Session session = RepositoryUtil.getSession(getRepositoryManager(), this.request);
- DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
- final String id = new URLInformation(webappUrl).getPublicationId();
- this.publication = factory.getPublication(id);
+ Session session = this.repository.getSession(this.request);
+ this.publication = session.getUriHandler().getPublication(webappUrl);
this.serviceSelector = (ServiceSelector) this.manager.lookup(AccessControllerResolver.ROLE
+ "Selector");
@@ -309,12 +303,8 @@
this.sourceUrl = null;
}
- public RepositoryManager getRepositoryManager() {
- return repositoryManager;
- }
-
- public void setRepositoryManager(RepositoryManager repositoryManager) {
- this.repositoryManager = repositoryManager;
+ public void setRepository(Repository repository) {
+ this.repository = repository;
}
}
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/AbstractUsecase.java Mon Feb 9 21:04:26 2009
@@ -78,7 +78,6 @@
protected static final String PARAMETER_STATE_MACHINE = "private.stateMachine";
protected static final String PARAMETER_SESSION = "private.session";
- protected static final String PARAMETER_FACTORY = "private.factory";
protected static final String PARAMETER_CHECKOUT_RESTRICTED_TO_SESSION = "checkoutRestrictedToSession";
protected static final String PARAMETERS_INITIALIZED = "private.parametersInitialized";
@@ -546,16 +545,6 @@
return (Part) getParameter(name);
}
- protected DocumentFactory getDocumentFactory() {
- DocumentFactory factory = (DocumentFactory) getParameter(PARAMETER_FACTORY);
- Session session = getSession();
- if (factory == null || factory != session.getDocumentFactory()) {
- factory = session.getDocumentFactory();
- setParameter(PARAMETER_FACTORY, factory);
- }
- return factory;
- }
-
/**
* TODO: Add init-method to bean.
*/
@@ -736,9 +725,7 @@
if (!objects[i].isLocked()) {
objects[i].lock();
}
- if (!isOptimistic()
- && !objects[i].isCheckedOutBySession(getSession().getDocumentFactory()
- .getSession())) {
+ if (!isOptimistic() && !objects[i].isCheckedOutBySession(getRepositorySession())) {
objects[i].checkout(checkoutRestrictedToSession());
}
}
@@ -752,8 +739,7 @@
for (int i = 0; i < objects.length; i++) {
if (objects[i].isCheckedOut()
- && !objects[i].isCheckedOutBySession(getSession().getDocumentFactory()
- .getSession())) {
+ && !objects[i].isCheckedOutBySession(getRepositorySession())) {
if (getLogger().isDebugEnabled()) {
getLogger().debug(
"AbstractUsecase::lockInvolvedObjects() can not execute, object ["
@@ -765,6 +751,10 @@
return canExecute;
}
+ private org.apache.lenya.cms.repository.Session getRepositorySession() {
+ return (org.apache.lenya.cms.repository.Session) getSession();
+ }
+
/**
* @see org.apache.lenya.cms.usecase.Usecase#cancel()
*/
@@ -879,11 +869,7 @@
protected Publication getPublication() {
if (this.pub == null) {
String pubId = new URLInformation(getSourceURL()).getPublicationId();
- try {
- this.pub = getDocumentFactory().getPublication(pubId);
- } catch (PublicationException e) {
- throw new RuntimeException(e);
- }
+ this.pub = getSession().getPublication(pubId);
}
return this.pub;
}
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/DocumentUsecase.java Mon Feb 9 21:04:26 2009
@@ -19,8 +19,7 @@
package org.apache.lenya.cms.usecase;
import org.apache.lenya.cms.publication.Document;
-import org.apache.lenya.cms.publication.DocumentBuildException;
-import org.apache.lenya.cms.publication.DocumentFactory;
+import org.apache.lenya.cms.publication.Session;
/**
* <p>
@@ -56,30 +55,16 @@
}
/*
- public void setParameter(String name, Object value) {
- if (name.equals(SOURCE_URL)) {
- setSourceURL((String) value);
- }
- else {
- super.setParameter(name, value);
- }
- }
- */
+ * public void setParameter(String name, Object value) { if (name.equals(SOURCE_URL)) {
+ * setSourceURL((String) value); } else { super.setParameter(name, value); } }
+ */
/**
- * @see org.apache.lenya.cms.usecase.Usecase#setSourceURL(java.lang.String)
- public void setSourceURL(String url) {
- try {
- DocumentFactory factory = getDocumentFactory();
- if (factory.isDocument(url)) {
- Document document = factory.getFromURL(url);
- setParameter(DOCUMENT, document);
- }
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- super.setParameter(SOURCE_URL, url);
- }
+ * @see org.apache.lenya.cms.usecase.Usecase#setSourceURL(java.lang.String) public void
+ * setSourceURL(String url) { try { DocumentFactory factory = getDocumentFactory(); if
+ * (factory.isDocument(url)) { Document document = factory.getFromURL(url);
+ * setParameter(DOCUMENT, document); } } catch (Exception e) { throw new
+ * RuntimeException(e); } super.setParameter(SOURCE_URL, url); }
*/
/**
@@ -88,24 +73,20 @@
*/
protected Document getSourceDocument() {
Document doc = (Document) getParameter(DOCUMENT);
- if (doc == null || doc.getFactory().getSession() != getSession()) {
- try {
- DocumentFactory factory = getDocumentFactory();
- String sourceUrl = getParameterAsString(SOURCE_URL);
- if (factory.isDocument(sourceUrl)) {
- doc = factory.getFromURL(sourceUrl);
- setParameter(DOCUMENT, doc);
- }
- } catch (DocumentBuildException e) {
- throw new RuntimeException(e);
+ Session session = getSession();
+ if (doc == null || doc.getSession() != session) {
+ String sourceUrl = getParameterAsString(SOURCE_URL);
+ if (session.getUriHandler().isDocument(sourceUrl)) {
+ doc = session.getUriHandler().getDocument(sourceUrl);
+ setParameter(DOCUMENT, doc);
}
}
return doc;
}
/**
- * Sets the target document for the case that the usecase execution
- * succeeded (see {@link #getTargetDocument(boolean)}).
+ * Sets the target document for the case that the usecase execution succeeded (see
+ * {@link #getTargetDocument(boolean)}).
* @param document A document.
*/
protected void setTargetDocument(Document document) {
@@ -113,9 +94,9 @@
}
/**
- * Returns the document to be redirected to after the usecase has been
- * completed. If the parameter <code>success</code> is false, the source
- * document is returned (override this method to change this behaviour).
+ * Returns the document to be redirected to after the usecase has been completed. If the
+ * parameter <code>success</code> is false, the source document is returned (override this
+ * method to change this behaviour).
* @param success If the usecase was successfully completed.
* @return A document.
*/
@@ -128,8 +109,8 @@
}
/**
- * If {@link #setTargetDocument(Document)}was not called, the URL of the
- * source document ( {@link #getSourceDocument()}) is returned.
+ * If {@link #setTargetDocument(Document)}was not called, the URL of the source document (
+ * {@link #getSourceDocument()}) is returned.
* @see org.apache.lenya.cms.usecase.Usecase#getTargetURL(boolean)
*/
public String getTargetURL(boolean success) {
@@ -155,20 +136,14 @@
* @see org.apache.lenya.cms.usecase.AbstractUsecase#setDefaultTargetURL(java.lang.String)
*/
protected void setDefaultTargetURL(String url) {
- try {
- Document target = getDocumentFactory().getFromURL(url);
- setParameter(TARGET_DOCUMENT, target);
- } catch (DocumentBuildException e) {
- throw new RuntimeException(e);
- }
+ Document target = getSession().getUriHandler().getDocument(url);
+ setParameter(TARGET_DOCUMENT, target);
}
/**
- * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters()
- protected void initParameters() {
- super.initParameters();
-
- setParameter(DOCUMENT, getSourceDocument());
- }
+ * @see org.apache.lenya.cms.usecase.AbstractUsecase#initParameters() protected void
+ * initParameters() { super.initParameters();
+ *
+ * setParameter(DOCUMENT, getSourceDocument()); }
*/
}
\ No newline at end of file
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/gui/impl/GUIManagerImpl.java Mon Feb 9 21:04:26 2009
@@ -36,13 +36,10 @@
import org.apache.lenya.ac.Role;
import org.apache.lenya.cms.ac.PolicyUtil;
import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.Repository;
+import org.apache.lenya.cms.publication.Session;
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.cms.usecase.Usecase;
import org.apache.lenya.cms.usecase.UsecaseMessage;
import org.apache.lenya.cms.usecase.UsecaseResolver;
@@ -66,14 +63,10 @@
private Map name2group = new HashMap();
private UsecaseResolver usecaseResolver;
- private RepositoryManager repositoryManager;
+ private Repository repository;
- public RepositoryManager getRepositoryManager() {
- return repositoryManager;
- }
-
- public void setRepositoryManager(RepositoryManager repositoryManager) {
- this.repositoryManager = repositoryManager;
+ public void setRepository(Repository repository) {
+ this.repository = repository;
}
/**
@@ -173,10 +166,9 @@
}
HttpServletRequest request = getRequest();
- Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
- DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
+ Session session = this.repository.getSession(request);
String pubId = new URLInformation(this.webappUrl).getPublicationId();
- Publication pub = factory.getPublication(pubId);
+ Publication pub = session.getPublication(pubId);
if (!authorizer.authorizeUsecase(usecaseName, getRoles(), pub)) {
if (getLogger().isDebugEnabled()) {
getLogger().debug("Usecase not authorized");
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseInvokerImpl.java Mon Feb 9 21:04:26 2009
@@ -34,8 +34,6 @@
import org.apache.lenya.ac.Role;
import org.apache.lenya.cms.ac.PolicyUtil;
import org.apache.lenya.cms.ac.usecase.UsecaseAuthorizer;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.Publication;
import org.apache.lenya.cms.publication.Repository;
import org.apache.lenya.cms.publication.Session;
Modified: lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java?rev=742731&r1=742730&r2=742731&view=diff
==============================================================================
--- lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java (original)
+++ lenya/trunk/org.apache.lenya.core.usecase/src/main/java/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java Mon Feb 9 21:04:26 2009
@@ -26,16 +26,13 @@
import org.apache.cocoon.processing.ProcessInfoProvider;
import org.apache.cocoon.spring.configurator.WebAppContextUtils;
import org.apache.cocoon.util.AbstractLogEnabled;
-import org.apache.lenya.cms.publication.DocumentFactory;
-import org.apache.lenya.cms.publication.DocumentUtil;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.URLInformation;
+import org.apache.lenya.cms.publication.Repository;
+import org.apache.lenya.cms.publication.Session;
import org.apache.lenya.cms.publication.templating.PublicationTemplateManager;
-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.cms.usecase.Usecase;
import org.apache.lenya.cms.usecase.UsecaseResolver;
+import org.apache.lenya.util.ServletHelper;
/**
* Usecase resolver implementation.
@@ -45,7 +42,7 @@
public class UsecaseResolverImpl extends AbstractLogEnabled implements UsecaseResolver {
private PublicationTemplateManager templateManager;
- private RepositoryManager repositoryManager;
+ private Repository repository;
/**
* @see org.apache.lenya.cms.usecase.UsecaseResolver#release(org.apache.lenya.cms.usecase.Usecase)
@@ -85,13 +82,11 @@
Publication publication = null;
try {
- Session session = RepositoryUtil.getSession(getRepositoryManager(), request);
- DocumentFactory factory = DocumentUtil.createDocumentFactory(session);
- URLInformation info = new URLInformation(webappUrl);
- String pubId = info.getPublicationId();
+ Session session = this.repository.getSession(request);
- if (pubId != null && factory.existsPublication(pubId)) {
- publication = factory.getPublication(pubId);
+ String uri = ServletHelper.getWebappURI(request);
+ if (session.getUriHandler().isPublication(uri)) {
+ publication = session.getUriHandler().getPublication(uri);
}
} catch (Exception e) {
throw new RuntimeException(e);
@@ -148,12 +143,8 @@
return templateManager;
}
- public void setRepositoryManager(RepositoryManager repositoryManager) {
- this.repositoryManager = repositoryManager;
- }
-
- public RepositoryManager getRepositoryManager() {
- return repositoryManager;
+ public void setRepository(Repository repository) {
+ this.repository = repository;
}
}
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org