Ä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:associations>
</xrd:adapter> </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"> <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.CMS;
import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentItemXMLRenderer;
import com.arsdigita.dispatcher.RequestContext; import com.arsdigita.dispatcher.RequestContext;
import com.arsdigita.domain.DomainObjectXMLRenderer;
import com.arsdigita.xml.Document; import com.arsdigita.xml.Document;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import java.io.IOException; import java.io.IOException;
@ -58,8 +58,8 @@ public class ItemXML extends ResourceHandlerImpl {
Element content = new Element("cms:item", CMS.CMS_XML_NS); Element content = new Element("cms:item", CMS.CMS_XML_NS);
DomainObjectXMLRenderer renderer = ContentItemXMLRenderer renderer =
new DomainObjectXMLRenderer(content); new ContentItemXMLRenderer(content);
renderer.setWrapAttributes(true); renderer.setWrapAttributes(true);
renderer.setWrapRoot(false); renderer.setWrapRoot(false);

View File

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

View File

@ -20,12 +20,12 @@ package com.arsdigita.cms.search;
import com.arsdigita.cms.CMS; import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItemXMLRenderer;
import com.arsdigita.cms.util.GlobalizationUtil; import com.arsdigita.cms.util.GlobalizationUtil;
import com.arsdigita.search.ContentType; import com.arsdigita.search.ContentType;
import com.arsdigita.search.ContentProvider; import com.arsdigita.search.ContentProvider;
import com.arsdigita.domain.DomainObject; import com.arsdigita.domain.DomainObject;
import com.arsdigita.domain.DomainObjectXMLRenderer;
import com.arsdigita.xml.Document; import com.arsdigita.xml.Document;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
import com.arsdigita.util.UncheckedWrapperException; import com.arsdigita.util.UncheckedWrapperException;
@ -60,8 +60,8 @@ public class XMLContentProvider implements ContentProvider {
public byte[] getBytes() { public byte[] getBytes() {
Element root = new Element("cms:item", CMS.CMS_XML_NS); Element root = new Element("cms:item", CMS.CMS_XML_NS);
DomainObjectXMLRenderer renderer = ContentItemXMLRenderer renderer =
new DomainObjectXMLRenderer(root); new ContentItemXMLRenderer(root);
renderer.setWrapAttributes(true); renderer.setWrapAttributes(true);
renderer.walk(m_obj, m_adapterContext); 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.bebop.SimpleComponent;
import com.arsdigita.cms.CMS; import com.arsdigita.cms.CMS;
import com.arsdigita.cms.ContentItem; import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.ContentItemXMLRenderer;
import com.arsdigita.cms.ContentSection; import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.ContentSectionCollection; import com.arsdigita.cms.ContentSectionCollection;
import com.arsdigita.cms.Folder; import com.arsdigita.cms.Folder;
import com.arsdigita.cms.dispatcher.SimpleXMLGenerator; import com.arsdigita.cms.dispatcher.SimpleXMLGenerator;
import com.arsdigita.domain.DomainObjectXMLRenderer;
import com.arsdigita.xml.Element; import com.arsdigita.xml.Element;
@ -205,7 +205,7 @@ public class FolderContent extends SimpleComponent {
log.debug("Rendering item '"+item.getName()+"'."); log.debug("Rendering item '"+item.getName()+"'.");
Element itemElement = parent.newChildElement(TAG_ITEM, CMS.CMS_XML_NS); 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 // not sure these are necessary
renderer.setWrapAttributes(true); renderer.setWrapAttributes(true);

View File

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

View File

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