svn commit: r568041 - in /lenya/trunk/src: impl/java/org/apache/lenya/cms/publication/ java/org/apache/lenya/cms/cocoon/components/modules/input/ java/org/apache/lenya/cms/cocoon/source/ java/org/apache/lenya/cms/publication/ modules-core/ac/java/src/o...
[email protected] Tue, 21 Aug 2007 09:47:24 -0000
Newsgroups
gmane.comp.cms.lenya.cvs
Message-ID
<[email protected] >
Author: andreas
Date: Tue Aug 21 02:47:23 2007
New Revision: 568041
URL: http://svn.apache.org/viewvc?rev=568041&view=rev
Log:
Added DocumentFactory.existsPublication(id) for simplicity, fixed publication handling in i18n (fixes bug 43171)
Modified:
lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java
lenya/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelope.java
lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
lenya/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/usecases/CreatePublicationFromTemplate.java
lenya/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java
lenya/trunk/src/webapp/lenya/i18n.xmap
Modified: lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java (original)
+++ lenya/trunk/src/impl/java/org/apache/lenya/cms/publication/DocumentFactoryImpl.java Tue Aug 21 02:47:23 2007
@@ -330,4 +330,8 @@
return this.pubManager;
}
+ public boolean existsPublication(String id) {
+ return Arrays.asList(getPubManager().getPublicationIds()).contains(id);
+ }
+
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/AbstractPageEnvelopeModule.java Tue Aug 21 02:47:23 2007
@@ -21,7 +21,6 @@
package org.apache.lenya.cms.cocoon.components.modules.input;
import java.io.File;
-import java.util.Arrays;
import java.util.Map;
import org.apache.avalon.framework.configuration.ConfigurationException;
@@ -32,7 +31,6 @@
import org.apache.lenya.cms.publication.PageEnvelope;
import org.apache.lenya.cms.publication.PageEnvelopeFactory;
import org.apache.lenya.cms.publication.Publication;
-import org.apache.lenya.cms.publication.PublicationManager;
import org.apache.lenya.cms.publication.URLInformation;
import org.apache.lenya.util.ServletHelper;
@@ -73,14 +71,12 @@
Context context = ObjectModelHelper.getContext(objectModel);
String servletContextPath = context.getRealPath("");
- PublicationManager pubMgr = null;
try {
DocumentFactory factory = getDocumentFactory();
Publication pub = null;
- pubMgr = (PublicationManager) this.manager.lookup(PublicationManager.ROLE);
String pubId = new URLInformation(webappUrl).getPublicationId();
- if (pubId != null && Arrays.asList(pubMgr.getPublicationIds()).contains(pubId)) {
- pub = pubMgr.getPublication(factory, pubId);
+ if (pubId != null && factory.existsPublication(pubId)) {
+ pub = factory.getPublication(pubId);
}
envelope = PageEnvelopeFactory.getInstance().getPageEnvelope(
factory,
@@ -90,10 +86,6 @@
pub);
} catch (Exception e) {
throw new ConfigurationException("Resolving page envelope failed: ", e);
- } finally {
- if (pubMgr != null) {
- this.manager.release(pubMgr);
- }
}
request.setAttribute(PageEnvelope.class.getName(), envelope);
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/components/modules/input/PageEnvelopeModule.java Tue Aug 21 02:47:23 2007
@@ -73,6 +73,8 @@
value = envelope.getArea();
} else if (name.equals(PageEnvelope.CONTEXT)) {
value = envelope.getContext();
+ } else if (name.equals(PageEnvelope.IS_PUBLICATION)) {
+ value = Boolean.toString(envelope.getPublication() != null);
} else if (name.equals(PageEnvelope.PUBLICATION_ID)) {
value = envelope.getPublication().getId();
} else if (name.equals(PageEnvelope.PUBLICATION)) {
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/AggregatingFallbackSourceFactory.java Tue Aug 21 02:47:23 2007
@@ -100,13 +100,12 @@
publicationId = info.getPublicationId();
}
- pubMgr = (PublicationManager) this.manager.lookup(PublicationManager.ROLE);
DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
String[] uris;
- if (Arrays.asList(pubMgr.getPublicationIds()).contains(publicationId)) {
- Publication pub = pubMgr.getPublication(factory, publicationId);
+ if (factory.existsPublication(publicationId)) {
+ Publication pub = factory.getPublication(publicationId);
AllExistingSourceResolver resolver = new AllExistingSourceResolver();
templateManager.visit(pub, path, resolver);
uris = resolver.getUris();
Modified: lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/cocoon/source/FallbackSourceFactory.java Tue Aug 21 02:47:23 2007
@@ -19,7 +19,6 @@
import java.io.IOException;
import java.net.MalformedURLException;
-import java.util.Arrays;
import java.util.Map;
import org.apache.avalon.framework.context.ContextException;
@@ -39,7 +38,6 @@
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.PublicationManager;
import org.apache.lenya.cms.publication.URLInformation;
import org.apache.lenya.cms.publication.templating.ExistingSourceResolver;
import org.apache.lenya.cms.publication.templating.PublicationTemplateManager;
@@ -94,7 +92,6 @@
getLogger().debug("Path: [" + path + "]");
}
- PublicationManager pubMgr = null;
PublicationTemplateManager templateManager = null;
SourceResolver sourceResolver = null;
Source source = null;
@@ -113,10 +110,9 @@
publicationId = info.getPublicationId();
}
- pubMgr = (PublicationManager) this.manager.lookup(PublicationManager.ROLE);
DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
- if (Arrays.asList(pubMgr.getPublicationIds()).contains(publicationId)) {
- Publication pub = pubMgr.getPublication(factory, publicationId);
+ if (factory.existsPublication(publicationId)) {
+ Publication pub = factory.getPublication(publicationId);
VisitingSourceResolver resolver = getSourceVisitor();
templateManager.visit(pub, path, resolver);
source = resolver.getSource();
@@ -151,9 +147,6 @@
} finally {
if (templateManager != null) {
this.manager.release(templateManager);
- }
- if (pubMgr != null) {
- this.manager.release(pubMgr);
}
if (sourceResolver != null) {
this.manager.release(sourceResolver);
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/DocumentFactory.java Tue Aug 21 02:47:23 2007
@@ -117,5 +117,10 @@
* @return All publications.
*/
Publication[] getPublications();
-
+
+ /**
+ * @param id The publication ID.
+ * @return If a publication with this ID exists.
+ */
+ boolean existsPublication(String id);
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelope.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelope.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelope.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/publication/PageEnvelope.java Tue Aug 21 02:47:23 2007
@@ -35,7 +35,7 @@
* The names of the page envelope parameters.
*/
public static final String[] PARAMETER_NAMES = { PageEnvelope.AREA, PageEnvelope.CONTEXT,
- PageEnvelope.PUBLICATION_ID, PageEnvelope.PUBLICATION,
+ PageEnvelope.PUBLICATION_ID, PageEnvelope.PUBLICATION, PageEnvelope.IS_PUBLICATION,
PageEnvelope.PUBLICATION_LANGUAGES_CSV, PageEnvelope.DOCUMENT,
PageEnvelope.DOCUMENT_ID, PageEnvelope.DOCUMENT_PARENT, PageEnvelope.DOCUMENT_NAME,
PageEnvelope.DOCUMENT_LABEL, PageEnvelope.DOCUMENT_URL,
@@ -53,6 +53,10 @@
* <code>PUBLICATION</code> The publication
*/
public static final String PUBLICATION = "publication";
+ /**
+ * <code>IS_PUBLICATION</code> If the current URL refers to a publication ("true" or "false").
+ */
+ public static final String IS_PUBLICATION = "is-publication";
/**
* <code>PUBLICATION_LANGUAGES_CSV</code> A list of the publication's languages,
* comma-seperated
Modified: lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java (original)
+++ lenya/trunk/src/modules-core/ac/java/src/org/apache/lenya/cms/ac/PublicationAccessControllerResolver.java Tue Aug 21 02:47:23 2007
@@ -21,7 +21,6 @@
package org.apache.lenya.cms.ac;
import java.io.File;
-import java.util.Arrays;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.configuration.Configurable;
@@ -38,7 +37,6 @@
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.PublicationManager;
import org.apache.lenya.cms.publication.URLInformation;
/**
@@ -107,24 +105,19 @@
URLInformation info = new URLInformation(webappUrl);
String pubId = info.getPublicationId();
- PublicationManager pubMgr = null;
ContextUtility util = null;
try {
util = (ContextUtility) this.manager.lookup(ContextUtility.ROLE);
- pubMgr = (PublicationManager) this.manager.lookup(PublicationManager.ROLE);
Request request = util.getRequest();
DocumentFactory factory = DocumentUtil.getDocumentFactory(manager, request);
- if (pubId != null && Arrays.asList(pubMgr.getPublicationIds()).contains(pubId)) {
- publication = pubMgr.getPublication(factory, pubId);
+ if (pubId != null && factory.existsPublication(pubId)) {
+ publication = factory.getPublication(pubId);
}
} catch (Exception e) {
throw new AccessControlException(e);
} finally {
if (util != null) {
this.manager.release(util);
- }
- if (pubMgr != null) {
- this.manager.release(pubMgr);
}
}
if (publication != null) {
Modified: lenya/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/usecases/CreatePublicationFromTemplate.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/usecases/CreatePublicationFromTemplate.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/usecases/CreatePublicationFromTemplate.java (original)
+++ lenya/trunk/src/modules-core/templating/java/src/org/apache/lenya/cms/publication/usecases/CreatePublicationFromTemplate.java Tue Aug 21 02:47:23 2007
@@ -67,8 +67,7 @@
if (!PublicationUtil.isValidPublicationID(publicationId)) {
addErrorMessage("Please enter a valid publication ID!");
} else {
- Publication publication = getDocumentFactory().getPublication(publicationId);
- if (publication.exists()) {
+ if (getDocumentFactory().existsPublication(publicationId)) {
addErrorMessage("A publication with this ID already exists.");
}
}
Modified: lenya/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java (original)
+++ lenya/trunk/src/modules-core/usecase/java/src/org/apache/lenya/cms/usecase/impl/UsecaseResolverImpl.java Tue Aug 21 02:47:23 2007
@@ -134,13 +134,10 @@
DocumentFactory factory = DocumentUtil.getDocumentFactory(this.manager, request);
URLInformation info = new URLInformation(webappUrl);
- String publicationId = info.getPublicationId();
+ String pubId = info.getPublicationId();
- if (publicationId != null) {
- Publication pub = factory.getPublication(publicationId);
- if (pub.exists()) {
- publication = pub;
- }
+ if (pubId != null && factory.existsPublication(pubId)) {
+ publication = factory.getPublication(pubId);
}
} catch (Exception e) {
throw new RuntimeException(e);
Modified: lenya/trunk/src/webapp/lenya/i18n.xmap
URL: http://svn.apache.org/viewvc/lenya/trunk/src/webapp/lenya/i18n.xmap?rev=568041&r1=568040&r2=568041&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/i18n.xmap (original)
+++ lenya/trunk/src/webapp/lenya/i18n.xmap Tue Aug 21 02:47:23 2007
@@ -28,8 +28,9 @@
<map:resources>
<map:resource name="serializeCatalogue">
- <map:select type="resource-exists">
- <map:when test="context://lenya/pubs/{page-envelope:publication-id}/config/publication.xml">
+ <map:select type="parameter">
+ <map:parameter name="parameter-selector-test" value="{page-envelope:is-publication}"/>
+ <map:when test="true">
<map:transform src="resources/i18n/modules2xinclude.xsl">
<map:parameter name="pubId" value="{page-envelope:publication-id}"/>
<map:parameter name="catalogue" value="{catalogue}"/>