Änderung der Verabeitung von ContentBundles in RelatedLinks

Durch Einführung und Verwendung von ContentItemXMLRenderer weerden ContentBundles bei der Erzeugung der XML-Ausgabe zur ausgehandelten Sprache aufgelöst und statt des ContentBundles dieses neue Objekt ausgeben.

Es ist eine API-Änderung nötig gewesen: in DomainObjectTraversal.java mußte die walk()-Methode protected markiert werden.

git-svn-id: https://svn.libreccm.org/ccm/trunk@319 8810af33-2d31-482b-a856-94f89814c4df
master
quasi 2010-01-07 09:42:00 +00:00
parent 0c1c6858d2
commit 2bb0b8e1e4
7 changed files with 39 additions and 18 deletions

View File

@ -32,6 +32,24 @@
</xrd:associations>
</xrd:adapter>
<!-- Special handling for Link (by Quasimodo)-->
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.Link" extends="com.arsdigita.cms.ContentItem" traversalClass="com.arsdigita.cms.contenttypes.LinkTraversalAdapter">
<xrd:attributes rule="exclude">
<xrd:property name="/object/targetItem/id"/>
<xrd:property name="/object/targetItem/defaultDomainClass"/>
<xrd:property name="/object/targetItem/displayName"/>
<xrd:property name="/object/targetItem/isDeleted"/>
<xrd:property name="/object/targetItem/ancestors"/>
<xrd:property name="/object/targetItem/version"/>
<xrd:property name="/object/targetItem/name"/>
<xrd:property name="/object/targetItem/language"/>
<xrd:property name="/object/targetItem/content"/>
</xrd:attributes>
<xrd:associations rule="include">
<xrd:property name="/object/targetItem"/>
</xrd:associations>
</xrd:adapter>
<xrd:adapter objectType="com.arsdigita.cms.ContentPage" extends="com.arsdigita.cms.ContentItem" traversalClass="com.arsdigita.cms.contenttypes.ContentItemTraversalAdapter">

View File

@ -21,8 +21,8 @@ package com.arsdigita.cms.dispatcher;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentItemXMLRenderer;
import com.arsdigita.dispatcher.RequestContext;
import com.arsdigita.domain.DomainObjectXMLRenderer;
import com.arsdigita.xml.Document;
import com.arsdigita.xml.Element;
import java.io.IOException;
@ -58,8 +58,8 @@ public class ItemXML extends ResourceHandlerImpl {
Element content = new Element("cms:item", CMS.CMS_XML_NS);
DomainObjectXMLRenderer renderer =
new DomainObjectXMLRenderer(content);
ContentItemXMLRenderer renderer =
new ContentItemXMLRenderer(content);
renderer.setWrapAttributes(true);
renderer.setWrapRoot(false);

View File

@ -22,6 +22,7 @@ package com.arsdigita.cms.dispatcher;
import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentItemXMLRenderer;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.UserDefinedContentItem;
@ -29,7 +30,6 @@ import com.arsdigita.cms.util.GlobalizationUtil;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.domain.DomainObjectFactory;
import com.arsdigita.domain.DomainObjectTraversal;
import com.arsdigita.domain.DomainObjectXMLRenderer;
import com.arsdigita.domain.SimpleDomainObjectTraversalAdapter;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.Party;
@ -144,8 +144,8 @@ public class SimpleXMLGenerator implements XMLGenerator {
// This is the preferred method
Element content = startElement(useContext);
DomainObjectXMLRenderer renderer =
new DomainObjectXMLRenderer(content);
ContentItemXMLRenderer renderer =
new ContentItemXMLRenderer(content);
renderer.setWrapAttributes(true);
renderer.setWrapRoot(false);

View File

@ -20,12 +20,12 @@ package com.arsdigita.cms.search;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItemXMLRenderer;
import com.arsdigita.cms.util.GlobalizationUtil;
import com.arsdigita.search.ContentType;
import com.arsdigita.search.ContentProvider;
import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectXMLRenderer;
import com.arsdigita.xml.Document;
import com.arsdigita.xml.Element;
import com.arsdigita.util.UncheckedWrapperException;
@ -60,8 +60,8 @@ public class XMLContentProvider implements ContentProvider {
public byte[] getBytes() {
Element root = new Element("cms:item", CMS.CMS_XML_NS);
DomainObjectXMLRenderer renderer =
new DomainObjectXMLRenderer(root);
ContentItemXMLRenderer renderer =
new ContentItemXMLRenderer(root);
renderer.setWrapAttributes(true);
renderer.walk(m_obj, m_adapterContext);

View File

@ -22,11 +22,11 @@ import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.SimpleComponent;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentItemXMLRenderer;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ContentSectionCollection;
import com.arsdigita.cms.Folder;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.domain.DomainObjectXMLRenderer;
import com.arsdigita.xml.Element;
@ -205,7 +205,7 @@ public class FolderContent extends SimpleComponent {
log.debug("Rendering item '"+item.getName()+"'.");
Element itemElement = parent.newChildElement(TAG_ITEM, CMS.CMS_XML_NS);
DomainObjectXMLRenderer renderer = new DomainObjectXMLRenderer(itemElement);
ContentItemXMLRenderer renderer = new ContentItemXMLRenderer(itemElement);
// not sure these are necessary
renderer.setWrapAttributes(true);

View File

@ -22,11 +22,11 @@ import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.portal.AbstractPortletRenderer;
import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentItemXMLRenderer;
import com.arsdigita.cms.SecurityManager;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.cms.portlet.ContentItemPortlet;
import com.arsdigita.dispatcher.AccessDeniedException;
import com.arsdigita.domain.DomainObjectXMLRenderer;
import com.arsdigita.kernel.Kernel;
import com.arsdigita.kernel.Party;
import com.arsdigita.kernel.permissions.PermissionDescriptor;
@ -93,8 +93,7 @@ public class ContentItemPortletRenderer extends AbstractPortletRenderer {
Element contentItem = content.newChildElement("cms:item",
CMS.CMS_XML_NS);
DomainObjectXMLRenderer renderer = new DomainObjectXMLRenderer(
contentItem);
ContentItemXMLRenderer renderer = new ContentItemXMLRenderer(contentItem);
renderer.setWrapAttributes(true);
renderer.setWrapRoot(false);
@ -106,8 +105,12 @@ public class ContentItemPortletRenderer extends AbstractPortletRenderer {
public String getCacheKey(PageState state) {
ContentItem item = m_portlet.getContentItem();
if( null == item ) return "";
if( item.isLive() ) return item.getPublicVersion().getOID().toString();
if( null == item ) {
return "";
}
if( item.isLive() ) {
return item.getPublicVersion().getOID().toString();
}
// Don't cache it if it's not live
return "";

View File

@ -253,7 +253,7 @@ public abstract class DomainObjectTraversal {
walk(adapter, obj, "/object", context, null);
}
private void walk(final DomainObjectTraversalAdapter adapter,
protected void walk(final DomainObjectTraversalAdapter adapter,
final DomainObject obj,
final String path,
final String context,