From c0eea3ae957606e1e3cb4c9a6d707920d2fc3430 Mon Sep 17 00:00:00 2001 From: N Smith Date: Mon, 11 Jul 2011 16:24:58 +0000 Subject: [PATCH] Added channel-types.get REST method. Also made the versioning work when publishing nodes. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28923 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../publishing/PublishingQueueImplTest.java | 34 +++++---- .../StandardPublishingPackageSerializer.java | 69 ++++++++----------- 2 files changed, 49 insertions(+), 54 deletions(-) diff --git a/source/java/org/alfresco/repo/publishing/PublishingQueueImplTest.java b/source/java/org/alfresco/repo/publishing/PublishingQueueImplTest.java index 119ffc1cd9..d49226d142 100644 --- a/source/java/org/alfresco/repo/publishing/PublishingQueueImplTest.java +++ b/source/java/org/alfresco/repo/publishing/PublishingQueueImplTest.java @@ -19,10 +19,7 @@ package org.alfresco.repo.publishing; -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNull; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertTrue; +import static org.alfresco.model.ContentModel.PROP_VERSION_LABEL; import static org.alfresco.repo.publishing.PublishingModel.PROP_PUBLISHING_EVENT_WORKFLOW_ID; import static org.alfresco.repo.publishing.PublishingModel.PROP_WF_PUBLISHING_EVENT; import static org.alfresco.repo.publishing.PublishingModel.PROP_WF_SCHEDULED_PUBLISH_DATE; @@ -35,8 +32,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import javax.annotation.Resource; - import org.alfresco.model.ContentModel; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.service.cmr.publishing.MutablePublishingPackage; @@ -75,6 +70,8 @@ public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest NodeRef firstNode = createContent("First"); NodeRef secondNode = createContent("second"); + assertNull(nodeService.getProperty(firstNode, PROP_VERSION_LABEL)); + assertNull(nodeService.getProperty(firstNode, PROP_VERSION_LABEL)); MutablePublishingPackage publishingPackage = queue.createPublishingPackage(); publishingPackage.addNodesToPublish(firstNode, secondNode); @@ -87,6 +84,10 @@ public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest this.eventId = queue.scheduleNewEvent(publishingPackage, channelName, schedule, comment, null); + //Check schedule triggered versioning. + Serializable version = nodeService.getProperty(firstNode, PROP_VERSION_LABEL); + assertNotNull(version); + PublishingEvent event = publishingService.getPublishingEvent(eventId); assertEquals(eventId, event.getId()); assertEquals(comment, event.getComment()); @@ -119,6 +120,10 @@ public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest // assertEquals(1, toUnpublish.size()); // assertTrue(toUnpublish.contains(thirdNode)); + // Check the correct version is recorded in the entry. + PublishingPackageEntry entry = publishingPackage.getEntryMap().get(firstNode); + assertEquals(version, entry.getSnapshot().getVersion()); + NodeRef eventNode = new NodeRef(eventId); String wfId = (String) nodeService.getProperty(eventNode, PROP_PUBLISHING_EVENT_WORKFLOW_ID); @@ -131,6 +136,7 @@ public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest assertEquals(schedule, props.get(PROP_WF_SCHEDULED_PUBLISH_DATE)); } + @Test public void testScheduleNewPublishingEventWithStatusUpdate() throws Exception { NodeRef firstNode = createContent("First"); @@ -138,22 +144,22 @@ public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest List channelNames = Arrays.asList("Channel1", "Channel2", "Channel3" ); String message = "The message"; - queue.createStatusUpdate(message, secondNode, channelNames); + StatusUpdate update = queue.createStatusUpdate(message, secondNode, channelNames); // Publish an event with the StatusUpdate MutablePublishingPackage publishingPackage = queue.createPublishingPackage(); publishingPackage.addNodesToPublish(firstNode, secondNode); Calendar schedule = Calendar.getInstance(); schedule.add(Calendar.HOUR, 2); - this.eventId = queue.scheduleNewEvent(publishingPackage, channelName, schedule, comment, null); + this.eventId = queue.scheduleNewEvent(publishingPackage, channelName, schedule, comment, update); PublishingEvent event = publishingService.getPublishingEvent(eventId); - StatusUpdate update = event.getStatusUpdate(); -// assertEquals(message, update.getMessage()); -// assertEquals(secondNode, update.getNodeToLinkTo()); -// Set names = update.getChannelNames(); -// assertEquals(3, names.size()); -// assertTrue(names.containsAll(channelNames)); + StatusUpdate actualUpdate = event.getStatusUpdate(); + assertEquals(message, actualUpdate.getMessage()); + assertEquals(secondNode, actualUpdate.getNodeToLinkTo()); + Set names = actualUpdate.getChannelNames(); + assertEquals(3, names.size()); + assertTrue(names.containsAll(channelNames)); } private NodeRef createContent(String name) diff --git a/source/java/org/alfresco/repo/publishing/StandardPublishingPackageSerializer.java b/source/java/org/alfresco/repo/publishing/StandardPublishingPackageSerializer.java index e53ab6a12f..6b71addcd1 100644 --- a/source/java/org/alfresco/repo/publishing/StandardPublishingPackageSerializer.java +++ b/source/java/org/alfresco/repo/publishing/StandardPublishingPackageSerializer.java @@ -22,6 +22,7 @@ package org.alfresco.repo.publishing; import java.io.InputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; +import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.io.Writer; import java.util.Collection; @@ -32,6 +33,7 @@ import java.util.Map; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; +import org.alfresco.model.ContentModel; import org.alfresco.repo.transfer.manifest.TransferManifestDeletedNode; import org.alfresco.repo.transfer.manifest.TransferManifestHeader; import org.alfresco.repo.transfer.manifest.TransferManifestNormalNode; @@ -41,22 +43,18 @@ import org.alfresco.repo.transfer.manifest.XMLTransferManifestWriter; import org.alfresco.service.cmr.publishing.PublishingPackage; import org.alfresco.service.cmr.publishing.PublishingPackageEntry; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.QName; import org.xml.sax.SAXException; /** * @author Brian - * + * @author Nick Smith */ public class StandardPublishingPackageSerializer implements PublishingPackageSerializer { - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.publishing.PublishingPackageSerializer#deserialize( - * java.io.Reader) - */ - @Override + /** + * {@inheritDoc} + */ public PublishingPackage deserialize(InputStream input) throws Exception { SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); @@ -69,14 +67,9 @@ public class StandardPublishingPackageSerializer implements PublishingPackageSer return publishingPackage; } - /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.publishing.PublishingPackageSerializer#serialize(org - * .alfresco.service.cmr.publishing.PublishingPackage, java.io.Writer) - */ - @Override + /** + * {@inheritDoc} + */ public void serialize(PublishingPackage publishingPackage, OutputStream output) throws Exception { try @@ -96,7 +89,7 @@ public class StandardPublishingPackageSerializer implements PublishingPackageSer transferManifestWriter.writeTransferManifestHeader(header); for (PublishingPackageEntry entry : entries) { - if (PublishingPackageEntryImpl.class.isAssignableFrom(entry.getClass())) + if (entry instanceof PublishingPackageEntryImpl) { PublishingPackageEntryImpl entryImpl = (PublishingPackageEntryImpl)entry; transferManifestWriter.writeTransferManifestNode(entryImpl.getPayload()); @@ -118,14 +111,13 @@ public class StandardPublishingPackageSerializer implements PublishingPackageSer /** * @author Brian + * @author Nick Smith * */ public static class PublishingPackageDeserializer implements TransferManifestProcessor { Map entries = new HashMap(); - - /** * @return the entries */ @@ -134,46 +126,43 @@ public class StandardPublishingPackageSerializer implements PublishingPackageSer return entries; } - /* (non-Javadoc) - * @see org.alfresco.repo.transfer.manifest.TransferManifestProcessor#endTransferManifest() + /** + * {@inheritDoc} */ - @Override public void endTransferManifest() { //NOOP } - /* (non-Javadoc) - * @see org.alfresco.repo.transfer.manifest.TransferManifestProcessor#processTransferManifestNode(org.alfresco.repo.transfer.manifest.TransferManifestNormalNode) - */ - @Override + /** + * {@inheritDoc} + */ public void processTransferManifestNode(TransferManifestNormalNode node) { - entries.put(node.getNodeRef(), new PublishingPackageEntryImpl(true, node.getNodeRef(), node, null)); + Map props = node.getProperties(); + String version = (String) props.get(ContentModel.PROP_VERSION_LABEL); + entries.put(node.getNodeRef(), new PublishingPackageEntryImpl(true, node.getNodeRef(), node, version)); } - /* (non-Javadoc) - * @see org.alfresco.repo.transfer.manifest.TransferManifestProcessor#processTransferManifestNode(org.alfresco.repo.transfer.manifest.TransferManifestDeletedNode) - */ - @Override + /** + * {@inheritDoc} + */ public void processTransferManifestNode(TransferManifestDeletedNode node) { entries.put(node.getNodeRef(), new PublishingPackageEntryImpl(false, node.getNodeRef(), null, null)); } - /* (non-Javadoc) - * @see org.alfresco.repo.transfer.manifest.TransferManifestProcessor#processTransferManifiestHeader(org.alfresco.repo.transfer.manifest.TransferManifestHeader) - */ - @Override + /** + * {@inheritDoc} + */ public void processTransferManifiestHeader(TransferManifestHeader header) { //NOOP } - /* (non-Javadoc) - * @see org.alfresco.repo.transfer.manifest.TransferManifestProcessor#startTransferManifest() - */ - @Override + /** + * {@inheritDoc} + */ public void startTransferManifest() { //NOOP