mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Removed the Environment from the publishing implementation.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29183 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -34,17 +34,6 @@
|
|||||||
</property>
|
</property>
|
||||||
</properties>
|
</properties>
|
||||||
<associations>
|
<associations>
|
||||||
<association name="pub:editorialChannel">
|
|
||||||
<source>
|
|
||||||
<mandatory>false</mandatory>
|
|
||||||
<many>false</many>
|
|
||||||
</source>
|
|
||||||
<target>
|
|
||||||
<class>pub:DeliveryChannel</class>
|
|
||||||
<mandatory>false</mandatory>
|
|
||||||
<many>false</many>
|
|
||||||
</target>
|
|
||||||
</association>
|
|
||||||
<child-association name="pub:deliveryServers">
|
<child-association name="pub:deliveryServers">
|
||||||
<source>
|
<source>
|
||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
@@ -275,11 +264,11 @@
|
|||||||
</aspect>
|
</aspect>
|
||||||
|
|
||||||
<aspect name="pub:published">
|
<aspect name="pub:published">
|
||||||
<title>Channel Info</title>
|
<title>Published</title>
|
||||||
<description>Applied to a published node</description>
|
<description>Applied to a published node</description>
|
||||||
<parent>cm:titled</parent>
|
<parent>cm:titled</parent>
|
||||||
<associations>
|
<associations>
|
||||||
<child-association name="pub:source">
|
<association name="pub:source">
|
||||||
<source>
|
<source>
|
||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
<many>true</many>
|
<many>true</many>
|
||||||
@@ -289,8 +278,8 @@
|
|||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
<many>false</many>
|
<many>false</many>
|
||||||
</target>
|
</target>
|
||||||
</child-association>
|
</association>
|
||||||
<child-association name="pub:lastPublishingEvent">
|
<association name="pub:lastPublishingEvent">
|
||||||
<source>
|
<source>
|
||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
<many>false</many>
|
<many>false</many>
|
||||||
@@ -300,7 +289,18 @@
|
|||||||
<mandatory>false</mandatory>
|
<mandatory>false</mandatory>
|
||||||
<many>true</many>
|
<many>true</many>
|
||||||
</target>
|
</target>
|
||||||
</child-association>
|
</association>
|
||||||
|
<association name="pub:publishedChannel">
|
||||||
|
<source>
|
||||||
|
<mandatory>false</mandatory>
|
||||||
|
<many>false</many>
|
||||||
|
</source>
|
||||||
|
<target>
|
||||||
|
<class>pub:DeliveryChannel</class>
|
||||||
|
<mandatory>false</mandatory>
|
||||||
|
<many>true</many>
|
||||||
|
</target>
|
||||||
|
</association>
|
||||||
</associations>
|
</associations>
|
||||||
</aspect>
|
</aspect>
|
||||||
|
|
||||||
|
@@ -21,8 +21,8 @@ package org.alfresco.repo.publishing;
|
|||||||
|
|
||||||
import static org.alfresco.model.ContentModel.ASSOC_CONTAINS;
|
import static org.alfresco.model.ContentModel.ASSOC_CONTAINS;
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.ASPECT_PUBLISHED;
|
import static org.alfresco.repo.publishing.PublishingModel.ASPECT_PUBLISHED;
|
||||||
|
import static org.alfresco.repo.publishing.PublishingModel.ASSOC_PUBLISHED_CHANNEL;
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.ASSOC_SOURCE;
|
import static org.alfresco.repo.publishing.PublishingModel.ASSOC_SOURCE;
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.NAMESPACE;
|
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.PROP_CHANNEL;
|
import static org.alfresco.repo.publishing.PublishingModel.PROP_CHANNEL;
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.PROP_CHANNEL_TYPE;
|
import static org.alfresco.repo.publishing.PublishingModel.PROP_CHANNEL_TYPE;
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.PROP_CHANNEL_TYPE_ID;
|
import static org.alfresco.repo.publishing.PublishingModel.PROP_CHANNEL_TYPE_ID;
|
||||||
@@ -44,14 +44,13 @@ import org.alfresco.service.cmr.model.FileInfo;
|
|||||||
import org.alfresco.service.cmr.publishing.channels.Channel;
|
import org.alfresco.service.cmr.publishing.channels.Channel;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
||||||
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ContentData;
|
import org.alfresco.service.cmr.repository.ContentData;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.service.namespace.RegexQNamePattern;
|
|
||||||
import org.alfresco.util.GUID;
|
|
||||||
import org.alfresco.util.Pair;
|
import org.alfresco.util.Pair;
|
||||||
import org.alfresco.util.collections.CollectionUtils;
|
import org.alfresco.util.collections.CollectionUtils;
|
||||||
import org.alfresco.util.collections.Filter;
|
import org.alfresco.util.collections.Filter;
|
||||||
@@ -99,82 +98,41 @@ public class ChannelHelper
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Map<QName, Serializable> props = nodeService.getProperties(nodeRef);
|
Map<QName, Serializable> props = nodeService.getProperties(nodeRef);
|
||||||
String channelTypeId = (String) props.get(PublishingModel.PROP_CHANNEL_TYPE_ID);
|
String channelTypeId = (String) props.get(PROP_CHANNEL_TYPE_ID);
|
||||||
ChannelType channelType = channelService.getChannelType(channelTypeId);
|
ChannelType channelType = channelService.getChannelType(channelTypeId);
|
||||||
String name = (String) props.get(ContentModel.PROP_NAME);
|
String name = (String) props.get(ContentModel.PROP_NAME);
|
||||||
return new ChannelImpl(channelType, nodeRef, name, this);
|
return new ChannelImpl(channelType, nodeRef, name, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NodeRef addChannelToEnvironment(NodeRef environment, Channel channel, Map<QName, Serializable> properties)
|
|
||||||
{
|
|
||||||
ChannelType channelType = channel.getChannelType();
|
|
||||||
String channelName = channel.getName();
|
|
||||||
NodeRef envChannel = createChannelNode(environment, channelType, channelName, properties);
|
|
||||||
nodeService.createAssociation(envChannel, channel.getNodeRef(), PublishingModel.ASSOC_EDITORIAL_CHANNEL);
|
|
||||||
return envChannel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Channel getChannel(NodeRef environment, String channelName, ChannelService channelService)
|
|
||||||
{
|
|
||||||
NodeRef channelNode = getChannelNodeForEnvironment(environment, channelName);
|
|
||||||
if(channelNode != null)
|
|
||||||
{
|
|
||||||
return buildChannelObject(channelNode, channelService);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public NodeRef getChannelNodeForEnvironment(NodeRef environment, String channelName)
|
|
||||||
{
|
|
||||||
QName channelQName = getChannelQName(channelName);
|
|
||||||
List<ChildAssociationRef> channelAssocs = nodeService.getChildAssocs(environment, ASSOC_CONTAINS, channelQName);
|
|
||||||
return getSingleValue(channelAssocs, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a noderef from the editorial space (e.g. the doclib), this returns the corresponding noderef in the specified channel and environment.
|
* Given a noderef from the editorial space (e.g. the doclib), this returns the corresponding noderef published to the specified channel.
|
||||||
* @param source
|
* @param source
|
||||||
* @param environment
|
* @param channelNode
|
||||||
* @param channelName
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public NodeRef mapSourceToEnvironment(NodeRef source, NodeRef environment, String channelName)
|
public NodeRef mapSourceToEnvironment(NodeRef source, final NodeRef channelNode)
|
||||||
{
|
{
|
||||||
NodeRef channel = getChannelNodeForEnvironment(environment, channelName);
|
if(source == null || channelNode == null)
|
||||||
return mapSourceToEnvironmentInternal(source, channel);
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* Given a noderef from the editorial space (e.g. the doclib), this returns the corresponding noderef in the specified channelt
|
|
||||||
* @param source
|
|
||||||
* @param editorialChannel
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public NodeRef mapSourceToEnvironment(NodeRef source, NodeRef editorialChannel)
|
|
||||||
{
|
|
||||||
// NodeRef liveChannel = mapChannelNOde(editorialChannel);
|
|
||||||
return mapSourceToEnvironmentInternal(source, editorialChannel);
|
|
||||||
}
|
|
||||||
|
|
||||||
private NodeRef mapSourceToEnvironmentInternal(NodeRef source, NodeRef liveChannel)
|
|
||||||
{
|
|
||||||
if(source == null || liveChannel == null)
|
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<ChildAssociationRef> parentAssocs = nodeService.getParentAssocs(source, ASSOC_SOURCE, RegexQNamePattern.MATCH_ALL);
|
List<AssociationRef> sourceAssocs = nodeService.getSourceAssocs(source, ASSOC_SOURCE);
|
||||||
if(parentAssocs != null)
|
Function<? super AssociationRef, Boolean> acceptor = new Filter<AssociationRef>()
|
||||||
{
|
{
|
||||||
for (ChildAssociationRef parentAssoc : parentAssocs)
|
public Boolean apply(AssociationRef assoc)
|
||||||
{
|
{
|
||||||
NodeRef publishedNode = parentAssoc.getParentRef();
|
NodeRef publishedNode = assoc.getSourceRef();
|
||||||
NodeRef parent = nodeService.getPrimaryParent(publishedNode).getParentRef();
|
List<AssociationRef> channelAssoc = nodeService.getTargetAssocs(publishedNode, ASSOC_PUBLISHED_CHANNEL);
|
||||||
if(liveChannel.equals(parent))
|
if(CollectionUtils.isEmpty(channelAssoc))
|
||||||
{
|
{
|
||||||
return publishedNode;
|
return false;
|
||||||
}
|
}
|
||||||
|
NodeRef target = channelAssoc.get(0).getTargetRef();
|
||||||
|
return target.equals(channelNode);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
return null;
|
AssociationRef assoc = CollectionUtils.findFirst(sourceAssocs, acceptor);
|
||||||
|
return assoc == null ? null : assoc.getSourceRef();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -184,29 +142,10 @@ public class ChannelHelper
|
|||||||
*/
|
*/
|
||||||
public NodeRef mapEnvironmentToSource(NodeRef publishedNode)
|
public NodeRef mapEnvironmentToSource(NodeRef publishedNode)
|
||||||
{
|
{
|
||||||
List<ChildAssociationRef> childAssocs = nodeService.getChildAssocs(publishedNode, ASSOC_SOURCE, RegexQNamePattern.MATCH_ALL);
|
List<AssociationRef> assocs = nodeService.getTargetAssocs(publishedNode, ASSOC_SOURCE);
|
||||||
return getSingleValue(childAssocs, true);
|
return getSingleValue(assocs, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the {@link NodeRef} for the live channel given the {@link NodeRef} for the editorial channel.
|
|
||||||
* @param editorialChannel
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public NodeRef mapChannelNOde(NodeRef editorialChannel)
|
|
||||||
{
|
|
||||||
List<ChildAssociationRef> assocs = nodeService.getParentAssocs(editorialChannel, PublishingModel.ASSOC_EDITORIAL_CHANNEL, RegexQNamePattern.MATCH_ALL);
|
|
||||||
if(assocs.isEmpty())
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if(assocs.size()>1)
|
|
||||||
{
|
|
||||||
throw new IllegalStateException("There is more than one environment channel node!");
|
|
||||||
}
|
|
||||||
return assocs.get(0).getParentRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds the {@link Channel} NodeRef and {@link ChannelType} id for a given node, if such a Channel exists.
|
* Finds the {@link Channel} NodeRef and {@link ChannelType} id for a given node, if such a Channel exists.
|
||||||
* @param node
|
* @param node
|
||||||
@@ -239,11 +178,9 @@ public class ChannelHelper
|
|||||||
return nodeService.getProperties(channel);
|
return nodeService.getProperties(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChildAssociationRef createMapping(NodeRef source, NodeRef publishedNode)
|
public AssociationRef createMapping(NodeRef source, NodeRef publishedNode)
|
||||||
{
|
{
|
||||||
QName qName = QName.createQName(NAMESPACE, GUID.generate());
|
AssociationRef assoc = nodeService.createAssociation(publishedNode, source, ASSOC_SOURCE);
|
||||||
ChildAssociationRef assoc = nodeService.addChild(publishedNode, source, ASSOC_SOURCE, qName);
|
|
||||||
nodeService.addAspect(source, ASPECT_PUBLISHED, null);
|
|
||||||
return assoc;
|
return assoc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -348,6 +285,16 @@ public class ChannelHelper
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addPublishedAspect(NodeRef publishedNode, NodeRef channelNode)
|
||||||
|
{
|
||||||
|
nodeService.addAspect(publishedNode, ASPECT_PUBLISHED, null);
|
||||||
|
List<AssociationRef> channelAssoc = nodeService.getTargetAssocs(publishedNode, ASSOC_PUBLISHED_CHANNEL);
|
||||||
|
if(CollectionUtils.isEmpty(channelAssoc))
|
||||||
|
{
|
||||||
|
nodeService.createAssociation(publishedNode, channelNode, ASSOC_PUBLISHED_CHANNEL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private List<ChildAssociationRef> getChannelAssocs(NodeRef channelContainer)
|
private List<ChildAssociationRef> getChannelAssocs(NodeRef channelContainer)
|
||||||
{
|
{
|
||||||
if(channelContainer == null)
|
if(channelContainer == null)
|
||||||
@@ -379,12 +326,12 @@ public class ChannelHelper
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private NodeRef getSingleValue(List<ChildAssociationRef> assocs, boolean getChild)
|
private NodeRef getSingleValue(List<AssociationRef> assocs, boolean getChild)
|
||||||
{
|
{
|
||||||
if(assocs != null && assocs.size()==1 )
|
if(assocs != null && assocs.size()==1 )
|
||||||
{
|
{
|
||||||
ChildAssociationRef association = assocs.get(0);
|
AssociationRef association = assocs.get(0);
|
||||||
return getChild ? association.getChildRef() : association.getParentRef();
|
return getChild ? association.getTargetRef() : association.getSourceRef();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -425,4 +372,5 @@ public class ChannelHelper
|
|||||||
this.fileFolderService = fileFolderService;
|
this.fileFolderService = fileFolderService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -51,6 +51,16 @@ public class ChannelImpl implements Channel
|
|||||||
this.channelHelper = channelHelper;
|
this.channelHelper = channelHelper;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getId()
|
||||||
|
{
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return nodeRef.toString();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@@ -89,6 +99,7 @@ public class ChannelImpl implements Channel
|
|||||||
@Override
|
@Override
|
||||||
public void publish(NodeRef nodeToPublish)
|
public void publish(NodeRef nodeToPublish)
|
||||||
{
|
{
|
||||||
|
channelHelper.addPublishedAspect(nodeToPublish, nodeRef);
|
||||||
if(channelHelper.canPublish(nodeToPublish, channelType))
|
if(channelHelper.canPublish(nodeToPublish, channelType))
|
||||||
{
|
{
|
||||||
channelType.publish(nodeToPublish, getProperties());
|
channelType.publish(nodeToPublish, getProperties());
|
||||||
@@ -119,8 +130,7 @@ public class ChannelImpl implements Channel
|
|||||||
*/
|
*/
|
||||||
public String getUrl(NodeRef publishedNode)
|
public String getUrl(NodeRef publishedNode)
|
||||||
{
|
{
|
||||||
NodeRef mappedChannel = channelHelper.mapChannelNOde(nodeRef);
|
NodeRef mappedNode = channelHelper.mapSourceToEnvironment(publishedNode, nodeRef);
|
||||||
NodeRef mappedNode = channelHelper.mapSourceToEnvironment(publishedNode, mappedChannel);
|
|
||||||
return channelType.getNodeUrl(mappedNode);
|
return channelType.getNodeUrl(mappedNode);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -39,7 +39,6 @@ import org.alfresco.service.cmr.dictionary.DictionaryService;
|
|||||||
import org.alfresco.service.cmr.publishing.channels.Channel;
|
import org.alfresco.service.cmr.publishing.channels.Channel;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
||||||
import org.alfresco.service.cmr.repository.AssociationRef;
|
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.cmr.site.SiteInfo;
|
import org.alfresco.service.cmr.site.SiteInfo;
|
||||||
@@ -164,12 +163,7 @@ public class ChannelServiceImpl implements ChannelService
|
|||||||
actualProps.put(PROP_CHANNEL_TYPE_ID, channelType.getId());
|
actualProps.put(PROP_CHANNEL_TYPE_ID, channelType.getId());
|
||||||
actualProps.put(PublishingModel.PROP_AUTHORISATION_COMPLETE, Boolean.FALSE);
|
actualProps.put(PublishingModel.PROP_AUTHORISATION_COMPLETE, Boolean.FALSE);
|
||||||
NodeRef channelNode = channelHelper.createChannelNode(channelContainer, channelType, name, actualProps);
|
NodeRef channelNode = channelHelper.createChannelNode(channelContainer, channelType, name, actualProps);
|
||||||
Channel channel = channelHelper.buildChannelObject(channelNode, this);
|
return channelHelper.buildChannelObject(channelNode, this);
|
||||||
|
|
||||||
// Now create the corresponding channel nodes in the environment
|
|
||||||
NodeRef environment = environmentHelper.getEnvironment(siteId);
|
|
||||||
channelHelper.addChannelToEnvironment(environment, channel, actualProps);
|
|
||||||
return channel;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -177,17 +171,7 @@ public class ChannelServiceImpl implements ChannelService
|
|||||||
*/
|
*/
|
||||||
public void deleteChannel(Channel channel)
|
public void deleteChannel(Channel channel)
|
||||||
{
|
{
|
||||||
List<NodeRef> allChannelNodes = new ArrayList<NodeRef>();
|
nodeService.deleteNode(channel.getNodeRef());
|
||||||
NodeRef editorialNode = channel.getNodeRef();
|
|
||||||
allChannelNodes.add(editorialNode);
|
|
||||||
for (AssociationRef assoc : nodeService.getSourceAssocs(editorialNode, PublishingModel.ASSOC_EDITORIAL_CHANNEL))
|
|
||||||
{
|
|
||||||
allChannelNodes.add(assoc.getSourceRef());
|
|
||||||
}
|
|
||||||
for (NodeRef channelNode : allChannelNodes)
|
|
||||||
{
|
|
||||||
nodeService.deleteNode(channelNode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -386,20 +370,8 @@ public class ChannelServiceImpl implements ChannelService
|
|||||||
{
|
{
|
||||||
HashMap<QName, Serializable> actualProps = new HashMap<QName, Serializable>(properties);
|
HashMap<QName, Serializable> actualProps = new HashMap<QName, Serializable>(properties);
|
||||||
actualProps.remove(ContentModel.PROP_NODE_UUID);
|
actualProps.remove(ContentModel.PROP_NODE_UUID);
|
||||||
List<NodeRef> allChannelNodes = new ArrayList<NodeRef>();
|
|
||||||
NodeRef editorialNode = channel.getNodeRef();
|
NodeRef editorialNode = channel.getNodeRef();
|
||||||
allChannelNodes.add(editorialNode);
|
nodeService.setProperties(editorialNode, actualProps);
|
||||||
for (AssociationRef assoc : nodeService.getSourceAssocs(editorialNode, PublishingModel.ASSOC_EDITORIAL_CHANNEL))
|
|
||||||
{
|
|
||||||
allChannelNodes.add(assoc.getSourceRef());
|
|
||||||
}
|
|
||||||
for (NodeRef channelNode : allChannelNodes)
|
|
||||||
{
|
|
||||||
for (Map.Entry<QName, Serializable> entry : actualProps.entrySet())
|
|
||||||
{
|
|
||||||
nodeService.setProperty(channelNode, entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -408,7 +380,8 @@ public class ChannelServiceImpl implements ChannelService
|
|||||||
@Override
|
@Override
|
||||||
public Channel getChannel(String id)
|
public Channel getChannel(String id)
|
||||||
{
|
{
|
||||||
if(id!=null)
|
if(id!=null&& id.isEmpty()==false
|
||||||
|
&& NodeRef.isNodeRef(id))
|
||||||
{
|
{
|
||||||
NodeRef node = new NodeRef(id);
|
NodeRef node = new NodeRef(id);
|
||||||
return channelHelper.buildChannelObject(node, this);
|
return channelHelper.buildChannelObject(node, this);
|
||||||
|
@@ -34,7 +34,6 @@ import org.alfresco.model.ContentModel;
|
|||||||
import org.alfresco.repo.site.SiteServiceException;
|
import org.alfresco.repo.site.SiteServiceException;
|
||||||
import org.alfresco.service.cmr.publishing.channels.Channel;
|
import org.alfresco.service.cmr.publishing.channels.Channel;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.util.GUID;
|
import org.alfresco.util.GUID;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -53,9 +52,6 @@ public class ChannelServiceImplIntegratedTest extends AbstractPublishingIntegrat
|
|||||||
@Resource(name="channelService")
|
@Resource(name="channelService")
|
||||||
private ChannelServiceImpl channelService;
|
private ChannelServiceImpl channelService;
|
||||||
|
|
||||||
@Resource(name="environmentHelper")
|
|
||||||
private EnvironmentHelper environmentHelper;
|
|
||||||
|
|
||||||
private ChannelType mockedChannelType = mock(ChannelType.class);
|
private ChannelType mockedChannelType = mock(ChannelType.class);
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -64,7 +60,6 @@ public class ChannelServiceImplIntegratedTest extends AbstractPublishingIntegrat
|
|||||||
{
|
{
|
||||||
super.onSetUp();
|
super.onSetUp();
|
||||||
channelService = (ChannelServiceImpl) getApplicationContext().getBean("channelService");
|
channelService = (ChannelServiceImpl) getApplicationContext().getBean("channelService");
|
||||||
environmentHelper = (EnvironmentHelper) getApplicationContext().getBean("environmentHelper");
|
|
||||||
when(mockedChannelType.getId()).thenReturn(channelTypeName);
|
when(mockedChannelType.getId()).thenReturn(channelTypeName);
|
||||||
when(mockedChannelType.getChannelNodeType()).thenReturn(PublishingModel.TYPE_DELIVERY_CHANNEL);
|
when(mockedChannelType.getChannelNodeType()).thenReturn(PublishingModel.TYPE_DELIVERY_CHANNEL);
|
||||||
|
|
||||||
@@ -82,30 +77,20 @@ public class ChannelServiceImplIntegratedTest extends AbstractPublishingIntegrat
|
|||||||
List<Channel> channels = channelService.getChannels(siteId);
|
List<Channel> channels = channelService.getChannels(siteId);
|
||||||
assertTrue(channels.isEmpty());
|
assertTrue(channels.isEmpty());
|
||||||
|
|
||||||
Channel channel = channelService.createChannel(siteId, channelTypeName, channelName, null);
|
Channel channel = createChannel();
|
||||||
assertEquals(channelTypeName, channel.getChannelType().getId());
|
assertEquals(channelTypeName, channel.getChannelType().getId());
|
||||||
assertEquals(channelName, channel.getName());
|
assertEquals(channelName, channel.getName());
|
||||||
assertTrue(nodeService.exists(channel.getNodeRef()));
|
assertTrue(nodeService.exists(channel.getNodeRef()));
|
||||||
|
|
||||||
NodeRef environmentNode = environmentHelper.getEnvironment(siteId);
|
|
||||||
assertNotNull(environmentNode);
|
|
||||||
assertNotNull(nodeService.getChildByName(environmentNode, ContentModel.ASSOC_CONTAINS, channelName));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testDeleteChannel() throws Exception
|
public void testDeleteChannel() throws Exception
|
||||||
{
|
{
|
||||||
testCreateChannel();
|
Channel channel = createChannel();
|
||||||
|
|
||||||
Channel channel = channelService.getChannel(siteId, channelName);
|
|
||||||
channelService.deleteChannel(channel);
|
channelService.deleteChannel(channel);
|
||||||
|
|
||||||
List<Channel> channels = channelService.getChannels(siteId);
|
List<Channel> channels = channelService.getChannels(siteId);
|
||||||
assertTrue(channels.isEmpty());
|
assertTrue(channels.isEmpty());
|
||||||
|
|
||||||
NodeRef environmentNode = environmentHelper.getEnvironment(siteId);
|
|
||||||
assertNotNull(environmentNode);
|
|
||||||
assertNull(nodeService.getChildByName(environmentNode, ContentModel.ASSOC_CONTAINS, channelName));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -121,10 +106,6 @@ public class ChannelServiceImplIntegratedTest extends AbstractPublishingIntegrat
|
|||||||
assertEquals(1, channels.size());
|
assertEquals(1, channels.size());
|
||||||
Channel channel = channels.get(0);
|
Channel channel = channels.get(0);
|
||||||
assertEquals(newChannelName, channel.getName());
|
assertEquals(newChannelName, channel.getName());
|
||||||
NodeRef environmentNode = environmentHelper.getEnvironment(siteId);
|
|
||||||
assertNotNull(environmentNode);
|
|
||||||
assertNull(nodeService.getChildByName(environmentNode, ContentModel.ASSOC_CONTAINS, channelName));
|
|
||||||
assertNotNull(nodeService.getChildByName(environmentNode, ContentModel.ASSOC_CONTAINS, newChannelName));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -197,8 +178,7 @@ public class ChannelServiceImplIntegratedTest extends AbstractPublishingIntegrat
|
|||||||
Channel channel = channelService.getChannel(siteId, channelName);
|
Channel channel = channelService.getChannel(siteId, channelName);
|
||||||
assertNull("Should return null if unknown channelName", channel);
|
assertNull("Should return null if unknown channelName", channel);
|
||||||
|
|
||||||
// Create channel
|
Channel createdChannel = createChannel();
|
||||||
Channel createdChannel = channelService.createChannel(siteId, channelTypeName, channelName, null);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -216,4 +196,12 @@ public class ChannelServiceImplIntegratedTest extends AbstractPublishingIntegrat
|
|||||||
assertEquals(createdChannel.getChannelType().getId(), channel.getChannelType().getId());
|
assertEquals(createdChannel.getChannelType().getId(), channel.getChannelType().getId());
|
||||||
assertEquals(createdChannel.getNodeRef(), channel.getNodeRef());
|
assertEquals(createdChannel.getNodeRef(), channel.getNodeRef());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private Channel createChannel()
|
||||||
|
{
|
||||||
|
return channelService.createChannel(siteId, channelTypeName, channelName, null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -28,7 +28,6 @@ import java.util.HashSet;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeMap;
|
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
@@ -70,7 +69,6 @@ public class EnvironmentHelper
|
|||||||
private SiteService siteService;
|
private SiteService siteService;
|
||||||
private NodeService nodeService;
|
private NodeService nodeService;
|
||||||
private PublishingEventHelper publishingEventHelper;
|
private PublishingEventHelper publishingEventHelper;
|
||||||
private ChannelHelper channelHelper;
|
|
||||||
|
|
||||||
static
|
static
|
||||||
{
|
{
|
||||||
@@ -123,7 +121,7 @@ public class EnvironmentHelper
|
|||||||
*/
|
*/
|
||||||
public void setChannelHelper(ChannelHelper channelHelper)
|
public void setChannelHelper(ChannelHelper channelHelper)
|
||||||
{
|
{
|
||||||
this.channelHelper = channelHelper;
|
//NOOP
|
||||||
}
|
}
|
||||||
|
|
||||||
public NodeRef getEnvironment(String siteId)
|
public NodeRef getEnvironment(String siteId)
|
||||||
@@ -261,11 +259,6 @@ public class EnvironmentHelper
|
|||||||
|
|
||||||
private PublishingEvent getLastPublishingEvent(NodeRef node, EnvironmentImpl environment, String channelName)
|
private PublishingEvent getLastPublishingEvent(NodeRef node, EnvironmentImpl environment, String channelName)
|
||||||
{
|
{
|
||||||
NodeRef mappedNode = channelHelper.mapSourceToEnvironment(node, environment.getNodeRef(), channelName);
|
|
||||||
if(mappedNode==null || nodeService.exists(mappedNode)==false)
|
|
||||||
{
|
|
||||||
return null; // Node is not published.
|
|
||||||
}
|
|
||||||
//TODO Find the publish event.
|
//TODO Find the publish event.
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@@ -28,9 +28,11 @@ import org.alfresco.model.ContentModel;
|
|||||||
import org.alfresco.service.cmr.publishing.MutablePublishingPackage;
|
import org.alfresco.service.cmr.publishing.MutablePublishingPackage;
|
||||||
import org.alfresco.service.cmr.publishing.NodePublishStatus;
|
import org.alfresco.service.cmr.publishing.NodePublishStatus;
|
||||||
import org.alfresco.service.cmr.publishing.NodePublishStatus.Status;
|
import org.alfresco.service.cmr.publishing.NodePublishStatus.Status;
|
||||||
|
import org.alfresco.service.cmr.publishing.channels.Channel;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.util.GUID;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,9 +42,9 @@ import org.junit.Test;
|
|||||||
*/
|
*/
|
||||||
public class EnvironmentImplTest extends AbstractPublishingIntegrationTest
|
public class EnvironmentImplTest extends AbstractPublishingIntegrationTest
|
||||||
{
|
{
|
||||||
private static final String channel1Name = "Channel1";
|
private Channel channel1;
|
||||||
private static final String channel2Name = "Channel2";
|
private Channel channel2;
|
||||||
|
|
||||||
@Resource(name="channelService")
|
@Resource(name="channelService")
|
||||||
private ChannelService channelService;
|
private ChannelService channelService;
|
||||||
|
|
||||||
@@ -52,7 +54,7 @@ public class EnvironmentImplTest extends AbstractPublishingIntegrationTest
|
|||||||
NodeRef first = fileFolderService.create(docLib, "first", ContentModel.TYPE_CONTENT).getNodeRef();
|
NodeRef first = fileFolderService.create(docLib, "first", ContentModel.TYPE_CONTENT).getNodeRef();
|
||||||
NodeRef second = fileFolderService.create(docLib, "second", ContentModel.TYPE_CONTENT).getNodeRef();
|
NodeRef second = fileFolderService.create(docLib, "second", ContentModel.TYPE_CONTENT).getNodeRef();
|
||||||
|
|
||||||
Map<NodeRef, NodePublishStatus> results = environment.checkPublishStatus(channel1Name, first);
|
Map<NodeRef, NodePublishStatus> results = environment.checkPublishStatus(channel1.getId(), first);
|
||||||
assertEquals(1, results.size());
|
assertEquals(1, results.size());
|
||||||
checkNodeStatus(first, Status.NOT_PUBLISHED, results);
|
checkNodeStatus(first, Status.NOT_PUBLISHED, results);
|
||||||
|
|
||||||
@@ -61,14 +63,14 @@ public class EnvironmentImplTest extends AbstractPublishingIntegrationTest
|
|||||||
schedule.add(Calendar.YEAR, 1);
|
schedule.add(Calendar.YEAR, 1);
|
||||||
MutablePublishingPackage pckg =queue.createPublishingPackage();
|
MutablePublishingPackage pckg =queue.createPublishingPackage();
|
||||||
pckg.addNodesToPublish(first);
|
pckg.addNodesToPublish(first);
|
||||||
queue.scheduleNewEvent(pckg, channel1Name, schedule, null, null);
|
queue.scheduleNewEvent(pckg, channel1.getId(), schedule, null, null);
|
||||||
|
|
||||||
results = environment.checkPublishStatus(channel1Name, first, second);
|
results = environment.checkPublishStatus(channel1.getId(), first, second);
|
||||||
assertEquals(2, results.size());
|
assertEquals(2, results.size());
|
||||||
checkNodeStatus(first, Status.ON_QUEUE, results);
|
checkNodeStatus(first, Status.ON_QUEUE, results);
|
||||||
checkNodeStatus(second, Status.NOT_PUBLISHED, results);
|
checkNodeStatus(second, Status.NOT_PUBLISHED, results);
|
||||||
|
|
||||||
results = environment.checkPublishStatus(channel2Name, first, second);
|
results = environment.checkPublishStatus(channel2.getId(), first, second);
|
||||||
assertEquals(2, results.size());
|
assertEquals(2, results.size());
|
||||||
checkNodeStatus(first, Status.NOT_PUBLISHED, results);
|
checkNodeStatus(first, Status.NOT_PUBLISHED, results);
|
||||||
checkNodeStatus(second, Status.NOT_PUBLISHED, results);
|
checkNodeStatus(second, Status.NOT_PUBLISHED, results);
|
||||||
@@ -95,8 +97,8 @@ public class EnvironmentImplTest extends AbstractPublishingIntegrationTest
|
|||||||
{
|
{
|
||||||
channelService.register(channelType);
|
channelService.register(channelType);
|
||||||
}
|
}
|
||||||
channelService.createChannel(siteId, channelTypeId, channel1Name, null);
|
this.channel1 = channelService.createChannel(siteId, channelTypeId, GUID.generate(), null);
|
||||||
channelService.createChannel(siteId, channelTypeId, channel2Name, null);
|
this.channel2 = channelService.createChannel(siteId, channelTypeId, GUID.generate(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -55,13 +55,13 @@ import org.alfresco.service.cmr.publishing.StatusUpdate;
|
|||||||
import org.alfresco.service.cmr.publishing.channels.Channel;
|
import org.alfresco.service.cmr.publishing.channels.Channel;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
import org.alfresco.service.cmr.publishing.channels.ChannelService;
|
||||||
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
import org.alfresco.service.cmr.publishing.channels.ChannelType;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.service.cmr.repository.ContentService;
|
import org.alfresco.service.cmr.repository.ContentService;
|
||||||
import org.alfresco.service.cmr.repository.ContentWriter;
|
import org.alfresco.service.cmr.repository.ContentWriter;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.service.namespace.RegexQNamePattern;
|
import org.alfresco.util.GUID;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -73,7 +73,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
*/
|
*/
|
||||||
public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
||||||
{
|
{
|
||||||
private static final String channelName = "Channel1";
|
|
||||||
private static final String contentNodeName = "TheName";
|
private static final String contentNodeName = "TheName";
|
||||||
private static final String content = "The quick brown fox jumped over the lazy dog";
|
private static final String content = "The quick brown fox jumped over the lazy dog";
|
||||||
|
|
||||||
@@ -92,7 +91,8 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
@Autowired
|
@Autowired
|
||||||
private PublishEventAction action;
|
private PublishEventAction action;
|
||||||
|
|
||||||
private NodeRef channel;
|
private Channel channel;
|
||||||
|
private NodeRef channelNode;
|
||||||
private String eventId;
|
private String eventId;
|
||||||
private ChannelType channelType;
|
private ChannelType channelType;
|
||||||
|
|
||||||
@@ -110,10 +110,10 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
NodeRef publishEventNode = publishNode(source);
|
NodeRef publishEventNode = publishNode(source);
|
||||||
|
|
||||||
// Check published node exists and is in correct place.
|
// Check published node exists and is in correct place.
|
||||||
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channel);
|
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channelNode);
|
||||||
assertNotNull(publishedNode);
|
assertNotNull(publishedNode);
|
||||||
assertTrue(nodeService.exists(publishedNode));
|
assertTrue(nodeService.exists(publishedNode));
|
||||||
assertEquals(channel, nodeService.getPrimaryParent(publishedNode).getParentRef());
|
assertEquals(channelNode, nodeService.getPrimaryParent(publishedNode).getParentRef());
|
||||||
|
|
||||||
// Check published node type and aspects
|
// Check published node type and aspects
|
||||||
assertEquals(TYPE_CONTENT, nodeService.getType(publishedNode));
|
assertEquals(TYPE_CONTENT, nodeService.getType(publishedNode));
|
||||||
@@ -131,9 +131,9 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
assertEquals(content, readContent(source));
|
assertEquals(content, readContent(source));
|
||||||
|
|
||||||
// Check lastPublishingEvent association is created.
|
// Check lastPublishingEvent association is created.
|
||||||
List<ChildAssociationRef> assocs = nodeService.getChildAssocs(publishedNode, ASSOC_LAST_PUBLISHING_EVENT, RegexQNamePattern.MATCH_ALL);
|
List<AssociationRef> assocs = nodeService.getTargetAssocs(publishedNode, ASSOC_LAST_PUBLISHING_EVENT);
|
||||||
assertEquals(1, assocs.size());
|
assertEquals(1, assocs.size());
|
||||||
assertEquals(publishEventNode, assocs.get(0).getChildRef());
|
assertEquals(publishEventNode, assocs.get(0).getTargetRef());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testUpdatePublishedNode() throws Exception
|
public void testUpdatePublishedNode() throws Exception
|
||||||
@@ -143,7 +143,7 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
NodeRef publishEventNode = publishNode(source);
|
NodeRef publishEventNode = publishNode(source);
|
||||||
|
|
||||||
// Check published node exists
|
// Check published node exists
|
||||||
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channel);
|
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channelNode);
|
||||||
assertNotNull(publishedNode);
|
assertNotNull(publishedNode);
|
||||||
assertTrue(nodeService.exists(publishedNode));
|
assertTrue(nodeService.exists(publishedNode));
|
||||||
|
|
||||||
@@ -158,9 +158,9 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
assertFalse(aspects.contains(ASPECT_GEOGRAPHIC));
|
assertFalse(aspects.contains(ASPECT_GEOGRAPHIC));
|
||||||
|
|
||||||
// Check lastPublishingEvent association is created.
|
// Check lastPublishingEvent association is created.
|
||||||
List<ChildAssociationRef> assocs = nodeService.getChildAssocs(publishedNode, ASSOC_LAST_PUBLISHING_EVENT, RegexQNamePattern.MATCH_ALL);
|
List<AssociationRef> assocs = nodeService.getTargetAssocs(publishedNode, ASSOC_LAST_PUBLISHING_EVENT);
|
||||||
assertEquals(1, assocs.size());
|
assertEquals(1, assocs.size());
|
||||||
assertEquals(publishEventNode, assocs.get(0).getChildRef());
|
assertEquals(publishEventNode, assocs.get(0).getTargetRef());
|
||||||
|
|
||||||
// Modify source node
|
// Modify source node
|
||||||
double lattitude = 0.25;
|
double lattitude = 0.25;
|
||||||
@@ -174,7 +174,7 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
|
|
||||||
// Update published node.
|
// Update published node.
|
||||||
publishEventNode = publishNode(source);
|
publishEventNode = publishNode(source);
|
||||||
NodeRef newPublishNode = channelHelper.mapSourceToEnvironment(source, channel);
|
NodeRef newPublishNode = channelHelper.mapSourceToEnvironment(source, channelNode);
|
||||||
assertEquals(publishedNode, newPublishNode);
|
assertEquals(publishedNode, newPublishNode);
|
||||||
|
|
||||||
// Published node shoudl still exist.
|
// Published node shoudl still exist.
|
||||||
@@ -194,16 +194,16 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
assertEquals(newContent, readContent(source));
|
assertEquals(newContent, readContent(source));
|
||||||
|
|
||||||
// Check lastPublishingEvent association has changed.
|
// Check lastPublishingEvent association has changed.
|
||||||
assocs = nodeService.getChildAssocs(publishedNode, ASSOC_LAST_PUBLISHING_EVENT, RegexQNamePattern.MATCH_ALL);
|
assocs = nodeService.getTargetAssocs(publishedNode, ASSOC_LAST_PUBLISHING_EVENT);
|
||||||
assertEquals(1, assocs.size());
|
assertEquals(1, assocs.size());
|
||||||
assertEquals(publishEventNode, assocs.get(0).getChildRef());
|
assertEquals(publishEventNode, assocs.get(0).getTargetRef());
|
||||||
|
|
||||||
// Remove aspect from source node.
|
// Remove aspect from source node.
|
||||||
nodeService.removeAspect(source, ASPECT_GEOGRAPHIC);
|
nodeService.removeAspect(source, ASPECT_GEOGRAPHIC);
|
||||||
|
|
||||||
// Update publish node
|
// Update publish node
|
||||||
publishNode(source);
|
publishNode(source);
|
||||||
newPublishNode = channelHelper.mapSourceToEnvironment(source, channel);
|
newPublishNode = channelHelper.mapSourceToEnvironment(source, channelNode);
|
||||||
assertEquals(publishedNode, newPublishNode);
|
assertEquals(publishedNode, newPublishNode);
|
||||||
|
|
||||||
aspects = nodeService.getAspects(source);
|
aspects = nodeService.getAspects(source);
|
||||||
@@ -225,7 +225,7 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
when(channelType.canPublish()).thenReturn(true);
|
when(channelType.canPublish()).thenReturn(true);
|
||||||
|
|
||||||
publishNode(source);
|
publishNode(source);
|
||||||
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channel);
|
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channelNode);
|
||||||
|
|
||||||
// Check publish was called
|
// Check publish was called
|
||||||
verify(channelType, times(1)).publish(eq(publishedNode), anyMap());
|
verify(channelType, times(1)).publish(eq(publishedNode), anyMap());
|
||||||
@@ -239,7 +239,7 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
|
|
||||||
// Publish source node but dont' call ChannelType.publish().
|
// Publish source node but dont' call ChannelType.publish().
|
||||||
publishNode(source);
|
publishNode(source);
|
||||||
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channel);
|
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channelNode);
|
||||||
|
|
||||||
// Check publish was not called.
|
// Check publish was not called.
|
||||||
verify(channelType, never()).publish(eq(publishedNode), anyMap());
|
verify(channelType, never()).publish(eq(publishedNode), anyMap());
|
||||||
@@ -270,7 +270,7 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
|
|
||||||
// Publish source node but don't call ChannelType.publish().
|
// Publish source node but don't call ChannelType.publish().
|
||||||
publishNode(source);
|
publishNode(source);
|
||||||
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channel);
|
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channelNode);
|
||||||
|
|
||||||
verify(channelType, never()).publish(eq(publishedNode), anyMap());
|
verify(channelType, never()).publish(eq(publishedNode), anyMap());
|
||||||
|
|
||||||
@@ -309,7 +309,7 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
|
|
||||||
// Publish source node but don't call ChannelType.publish().
|
// Publish source node but don't call ChannelType.publish().
|
||||||
publishNode(source);
|
publishNode(source);
|
||||||
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channel);
|
NodeRef publishedNode = channelHelper.mapSourceToEnvironment(source, channelNode);
|
||||||
|
|
||||||
verify(channelType, never()).publish(eq(publishedNode), anyMap());
|
verify(channelType, never()).publish(eq(publishedNode), anyMap());
|
||||||
|
|
||||||
@@ -330,7 +330,7 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
|
|
||||||
// Create Status Update
|
// Create Status Update
|
||||||
String message = "Here is the message ";
|
String message = "Here is the message ";
|
||||||
StatusUpdate status = queue.createStatusUpdate(message, source, channelName);
|
StatusUpdate status = queue.createStatusUpdate(message, source, channel.getId());
|
||||||
|
|
||||||
String url = "http://test/url";
|
String url = "http://test/url";
|
||||||
when(channelType.getNodeUrl(any(NodeRef.class))).thenReturn(url);
|
when(channelType.getNodeUrl(any(NodeRef.class))).thenReturn(url);
|
||||||
@@ -372,7 +372,7 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
{
|
{
|
||||||
Calendar schedule = Calendar.getInstance();
|
Calendar schedule = Calendar.getInstance();
|
||||||
schedule.add(Calendar.YEAR, 1);
|
schedule.add(Calendar.YEAR, 1);
|
||||||
this.eventId = queue.scheduleNewEvent(publishPckg, channelName, schedule, null, statusUpdate);
|
this.eventId = queue.scheduleNewEvent(publishPckg, channel.getId(), schedule, null, statusUpdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addGeographicAspect(NodeRef source, double lattitude, double longtitude)
|
private void addGeographicAspect(NodeRef source, double lattitude, double longtitude)
|
||||||
@@ -425,9 +425,8 @@ public class PublishEventActionTest extends AbstractPublishingIntegrationTest
|
|||||||
Mockito.reset(channelType);
|
Mockito.reset(channelType);
|
||||||
mockChannelTypeBehaviour(channelType);
|
mockChannelTypeBehaviour(channelType);
|
||||||
}
|
}
|
||||||
channelService.createChannel(siteId, channelTypeId, channelName, null);
|
this.channel = channelService.createChannel(siteId, channelTypeId, GUID.generate(), null);
|
||||||
|
this.channelNode = channel.getNodeRef();
|
||||||
this.channel = channelHelper.getChannelNodeForEnvironment(environment.getNodeRef(), channelName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
package org.alfresco.repo.publishing;
|
package org.alfresco.repo.publishing;
|
||||||
|
|
||||||
|
import static org.alfresco.repo.publishing.PublishingModel.ASSOC_LAST_PUBLISHING_EVENT;
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.ASSOC_PUBLISHING_EVENT;
|
import static org.alfresco.repo.publishing.PublishingModel.ASSOC_PUBLISHING_EVENT;
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.NAMESPACE;
|
import static org.alfresco.repo.publishing.PublishingModel.NAMESPACE;
|
||||||
import static org.alfresco.repo.publishing.PublishingModel.PROP_PUBLISHING_EVENT_CHANNEL;
|
import static org.alfresco.repo.publishing.PublishingModel.PROP_PUBLISHING_EVENT_CHANNEL;
|
||||||
@@ -64,6 +65,7 @@ import org.alfresco.service.cmr.publishing.PublishingEvent.Status;
|
|||||||
import org.alfresco.service.cmr.publishing.PublishingEventFilter;
|
import org.alfresco.service.cmr.publishing.PublishingEventFilter;
|
||||||
import org.alfresco.service.cmr.publishing.PublishingPackage;
|
import org.alfresco.service.cmr.publishing.PublishingPackage;
|
||||||
import org.alfresco.service.cmr.publishing.StatusUpdate;
|
import org.alfresco.service.cmr.publishing.StatusUpdate;
|
||||||
|
import org.alfresco.service.cmr.repository.AssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||||
import org.alfresco.service.cmr.repository.ContentReader;
|
import org.alfresco.service.cmr.repository.ContentReader;
|
||||||
import org.alfresco.service.cmr.repository.ContentService;
|
import org.alfresco.service.cmr.repository.ContentService;
|
||||||
@@ -193,7 +195,7 @@ public class PublishingEventHelper
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public NodeRef createNode(NodeRef queueNode, PublishingPackage publishingPackage, String channelName, Calendar schedule, String comment, StatusUpdate statusUpdate)
|
public NodeRef createNode(NodeRef queueNode, PublishingPackage publishingPackage, String channelId, Calendar schedule, String comment, StatusUpdate statusUpdate)
|
||||||
throws Exception
|
throws Exception
|
||||||
{
|
{
|
||||||
if (schedule == null)
|
if (schedule == null)
|
||||||
@@ -202,7 +204,7 @@ public class PublishingEventHelper
|
|||||||
}
|
}
|
||||||
String name = GUID.generate();
|
String name = GUID.generate();
|
||||||
Map<QName, Serializable> props =
|
Map<QName, Serializable> props =
|
||||||
buildPublishingEventProperties(publishingPackage, channelName, schedule, comment, statusUpdate, name);
|
buildPublishingEventProperties(publishingPackage, channelId, schedule, comment, statusUpdate, name);
|
||||||
ChildAssociationRef newAssoc = nodeService.createNode(queueNode,
|
ChildAssociationRef newAssoc = nodeService.createNode(queueNode,
|
||||||
ASSOC_PUBLISHING_EVENT,
|
ASSOC_PUBLISHING_EVENT,
|
||||||
QName.createQName(NAMESPACE, name),
|
QName.createQName(NAMESPACE, name),
|
||||||
@@ -213,14 +215,14 @@ public class PublishingEventHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Map<QName, Serializable> buildPublishingEventProperties(PublishingPackage publishingPackage,
|
private Map<QName, Serializable> buildPublishingEventProperties(PublishingPackage publishingPackage,
|
||||||
String channelName, Calendar schedule, String comment, StatusUpdate statusUpdate, String name)
|
String channelId, Calendar schedule, String comment, StatusUpdate statusUpdate, String name)
|
||||||
{
|
{
|
||||||
Map<QName, Serializable> props = new HashMap<QName, Serializable>();
|
Map<QName, Serializable> props = new HashMap<QName, Serializable>();
|
||||||
props.put(ContentModel.PROP_NAME, name);
|
props.put(ContentModel.PROP_NAME, name);
|
||||||
props.put(PROP_PUBLISHING_EVENT_STATUS, Status.IN_PROGRESS.name());
|
props.put(PROP_PUBLISHING_EVENT_STATUS, Status.IN_PROGRESS.name());
|
||||||
props.put(PROP_PUBLISHING_EVENT_TIME, schedule.getTime());
|
props.put(PROP_PUBLISHING_EVENT_TIME, schedule.getTime());
|
||||||
props.put(PublishingModel.PROP_PUBLISHING_EVENT_TIME_ZONE, schedule.getTimeZone().getID());
|
props.put(PublishingModel.PROP_PUBLISHING_EVENT_TIME_ZONE, schedule.getTimeZone().getID());
|
||||||
props.put(PublishingModel.PROP_PUBLISHING_EVENT_CHANNEL, channelName);
|
props.put(PublishingModel.PROP_PUBLISHING_EVENT_CHANNEL, channelId);
|
||||||
props.put(PublishingModel.PROP_PUBLISHING_EVENT_STATUS, PublishingModel.PROPVAL_PUBLISHING_EVENT_STATUS_SCHEDULED);
|
props.put(PublishingModel.PROP_PUBLISHING_EVENT_STATUS, PublishingModel.PROPVAL_PUBLISHING_EVENT_STATUS_SCHEDULED);
|
||||||
if (comment != null)
|
if (comment != null)
|
||||||
{
|
{
|
||||||
@@ -238,7 +240,7 @@ public class PublishingEventHelper
|
|||||||
{
|
{
|
||||||
props.put(PROP_STATUS_UPDATE_NODE_REF, statusNode.toString());
|
props.put(PROP_STATUS_UPDATE_NODE_REF, statusNode.toString());
|
||||||
}
|
}
|
||||||
props.put(PROP_STATUS_UPDATE_CHANNEL_NAMES, (Serializable) statusUpdate.getChannelNames());
|
props.put(PROP_STATUS_UPDATE_CHANNEL_NAMES, (Serializable) statusUpdate.getChannelIds());
|
||||||
}
|
}
|
||||||
return props;
|
return props;
|
||||||
}
|
}
|
||||||
@@ -467,4 +469,16 @@ public class PublishingEventHelper
|
|||||||
NodeRef environment = environmentAssoc.getParentRef();
|
NodeRef environment = environmentAssoc.getParentRef();
|
||||||
return environment;
|
return environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AssociationRef linkeToLastEvent(NodeRef publishedNode, NodeRef eventNode)
|
||||||
|
{
|
||||||
|
List<AssociationRef> assocs = nodeService.getTargetAssocs(publishedNode, ASSOC_LAST_PUBLISHING_EVENT);
|
||||||
|
if(isEmpty(assocs)==false)
|
||||||
|
{
|
||||||
|
// Remove old association.
|
||||||
|
AssociationRef assoc = assocs.get(0);
|
||||||
|
nodeService.removeAssociation(assoc.getSourceRef(), assoc.getTargetRef(), assoc.getTypeQName());
|
||||||
|
}
|
||||||
|
return nodeService.createAssociation(publishedNode, eventNode, ASSOC_LAST_PUBLISHING_EVENT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -36,7 +36,7 @@ public class PublishingEventImpl implements PublishingEvent
|
|||||||
{
|
{
|
||||||
private final String id;
|
private final String id;
|
||||||
private final Status status;
|
private final Status status;
|
||||||
private final String channelName;
|
private final String channelId;
|
||||||
private final PublishingPackage publishingPackage;
|
private final PublishingPackage publishingPackage;
|
||||||
private final Date createdTime;
|
private final Date createdTime;
|
||||||
private final String creator;
|
private final String creator;
|
||||||
@@ -55,7 +55,7 @@ public class PublishingEventImpl implements PublishingEvent
|
|||||||
{
|
{
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.status = status;
|
this.status = status;
|
||||||
this.channelName = channelName;
|
this.channelId = channelName;
|
||||||
this.publishingPackage = publishingPackage;
|
this.publishingPackage = publishingPackage;
|
||||||
this.createdTime = createdTime;
|
this.createdTime = createdTime;
|
||||||
this.creator = creator;
|
this.creator = creator;
|
||||||
@@ -69,7 +69,7 @@ public class PublishingEventImpl implements PublishingEvent
|
|||||||
public PublishingEventImpl(PublishingEvent event)
|
public PublishingEventImpl(PublishingEvent event)
|
||||||
{
|
{
|
||||||
this(event.getId(),
|
this(event.getId(),
|
||||||
event.getStatus(), event.getChannelName(),
|
event.getStatus(), event.getChannelId(),
|
||||||
event.getPackage(), event.getCreatedTime(),
|
event.getPackage(), event.getCreatedTime(),
|
||||||
event.getCreator(), event.getModifiedTime(),
|
event.getCreator(), event.getModifiedTime(),
|
||||||
event.getModifier(), event.getScheduledTime(), event.getComment(),
|
event.getModifier(), event.getScheduledTime(), event.getComment(),
|
||||||
@@ -97,9 +97,9 @@ public class PublishingEventImpl implements PublishingEvent
|
|||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public String getChannelName()
|
public String getChannelId()
|
||||||
{
|
{
|
||||||
return channelName;
|
return channelId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -73,11 +73,11 @@ public class PublishingEventProcessor
|
|||||||
nodeService.setProperty(eventNode, PublishingModel.PROP_PUBLISHING_EVENT_STATUS, inProgressStatus);
|
nodeService.setProperty(eventNode, PublishingModel.PROP_PUBLISHING_EVENT_STATUS, inProgressStatus);
|
||||||
PublishingEvent event = eventHelper.getPublishingEvent(eventNode);
|
PublishingEvent event = eventHelper.getPublishingEvent(eventNode);
|
||||||
NodeRef environment = eventHelper.getEnvironmentNodeForPublishingEvent(eventNode);
|
NodeRef environment = eventHelper.getEnvironmentNodeForPublishingEvent(eventNode);
|
||||||
String channelName = event.getChannelName();
|
String channelName = event.getChannelId();
|
||||||
Channel channel = channelHelper.getChannel(environment, channelName, channelService);
|
Channel channel = channelService.getChannel(channelName);
|
||||||
if (channel == null)
|
if (channel == null)
|
||||||
{
|
{
|
||||||
fail(event, "No channel found");
|
fail(eventNode, "No channel found");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -87,6 +87,10 @@ public class PublishingEventProcessor
|
|||||||
nodeService.setProperty(eventNode, PublishingModel.PROP_PUBLISHING_EVENT_STATUS, completedStatus);
|
nodeService.setProperty(eventNode, PublishingModel.PROP_PUBLISHING_EVENT_STATUS, completedStatus);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
fail(eventNode, e.getMessage());
|
||||||
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
behaviourFilter.enableAllBehaviours();
|
behaviourFilter.enableAllBehaviours();
|
||||||
@@ -109,10 +113,10 @@ public class PublishingEventProcessor
|
|||||||
message += urlShortener.shortenUrl(nodeUrl);
|
message += urlShortener.shortenUrl(nodeUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Set<String> channels = update.getChannelNames();
|
Set<String> channels = update.getChannelIds();
|
||||||
for (String channelName : channels)
|
for (String channelId : channels)
|
||||||
{
|
{
|
||||||
Channel channel = channelHelper.getChannel(environment, channelName, channelService);
|
Channel channel = channelService.getChannel(channelId);
|
||||||
if(channel != null && channel.getChannelType().canPublishStatusUpdates())
|
if(channel != null && channel.getChannelType().canPublishStatusUpdates())
|
||||||
{
|
{
|
||||||
channel.updateStatus(message);
|
channel.updateStatus(message);
|
||||||
@@ -143,9 +147,10 @@ public class PublishingEventProcessor
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void fail(PublishingEvent event, String msg)
|
public void fail(NodeRef eventNode, String msg)
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
String completedStatus = PublishingEvent.Status.FAILED.name();
|
||||||
|
nodeService.setProperty(eventNode, PublishingModel.PROP_PUBLISHING_EVENT_STATUS, completedStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
public NodeRef publishEntry(Channel channel, PublishingPackageEntry entry, NodeRef eventNode)
|
public NodeRef publishEntry(Channel channel, PublishingPackageEntry entry, NodeRef eventNode)
|
||||||
@@ -159,8 +164,7 @@ public class PublishingEventProcessor
|
|||||||
{
|
{
|
||||||
updatePublishedNode(publishedNode, entry);
|
updatePublishedNode(publishedNode, entry);
|
||||||
}
|
}
|
||||||
QName qName = QName.createQName(NAMESPACE, eventNode.getId());
|
eventHelper.linkeToLastEvent(publishedNode, eventNode);
|
||||||
nodeService.addChild(publishedNode, eventNode, ASSOC_LAST_PUBLISHING_EVENT, qName);
|
|
||||||
channel.publish(publishedNode);
|
channel.publish(publishedNode);
|
||||||
return publishedNode;
|
return publishedNode;
|
||||||
}
|
}
|
||||||
|
@@ -58,8 +58,6 @@ import org.junit.Test;
|
|||||||
*/
|
*/
|
||||||
public class PublishingIntegratedTest extends BaseSpringTest
|
public class PublishingIntegratedTest extends BaseSpringTest
|
||||||
{
|
{
|
||||||
private static String channelName = "Test Channel - Name";
|
|
||||||
|
|
||||||
protected ServiceRegistry serviceRegistry;
|
protected ServiceRegistry serviceRegistry;
|
||||||
protected RetryingTransactionHelper retryingTransactionHelper;
|
protected RetryingTransactionHelper retryingTransactionHelper;
|
||||||
protected NodeService nodeService;
|
protected NodeService nodeService;
|
||||||
@@ -74,6 +72,65 @@ public class PublishingIntegratedTest extends BaseSpringTest
|
|||||||
private ChannelType mockedChannelType = mock(ChannelType.class);
|
private ChannelType mockedChannelType = mock(ChannelType.class);
|
||||||
private String channelTypeName;
|
private String channelTypeName;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testScheduleNewEvent() throws Exception
|
||||||
|
{
|
||||||
|
Channel channel = channelService.createChannel(siteId, channelTypeName, GUID.generate(), null);
|
||||||
|
|
||||||
|
Set<NodeRef> nodes = new HashSet<NodeRef>();
|
||||||
|
for (int i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
nodes.add(nodeService.createNode(channel.getNodeRef(), ContentModel.ASSOC_CONTAINS, QName.createQName(
|
||||||
|
NamespaceService.CONTENT_MODEL_1_0_URI, Integer.toString(i)), ContentModel.TYPE_CONTENT).getChildRef());
|
||||||
|
}
|
||||||
|
|
||||||
|
PublishingQueue liveQueue = publishingService.getPublishingQueue(siteId);
|
||||||
|
MutablePublishingPackage publishingPackage = liveQueue.createPublishingPackage();
|
||||||
|
publishingPackage.addNodesToPublish(nodes);
|
||||||
|
|
||||||
|
Calendar scheduleTime = Calendar.getInstance();
|
||||||
|
scheduleTime.add(Calendar.HOUR, 1);
|
||||||
|
String eventId = liveQueue.scheduleNewEvent(publishingPackage, channel.getId(), scheduleTime, null, null);
|
||||||
|
|
||||||
|
PublishingEvent event = publishingService.getPublishingEvent(eventId);
|
||||||
|
|
||||||
|
Assert.assertEquals(scheduleTime, event.getScheduledTime());
|
||||||
|
Assert.assertEquals(eventId, event.getId());
|
||||||
|
Collection<PublishingPackageEntry> entries = event.getPackage().getEntries();
|
||||||
|
Assert.assertEquals(4, entries.size());
|
||||||
|
for (PublishingPackageEntry entry : entries)
|
||||||
|
{
|
||||||
|
Assert.assertTrue(entry.isPublish());
|
||||||
|
Assert.assertTrue(nodes.remove(entry.getNodeRef()));
|
||||||
|
}
|
||||||
|
Assert.assertTrue(nodes.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testCancelScheduledEvent()
|
||||||
|
{
|
||||||
|
Channel channel = channelService.createChannel(siteId, channelTypeName, GUID.generate(), null);
|
||||||
|
|
||||||
|
Set<NodeRef> nodes = new HashSet<NodeRef>();
|
||||||
|
for (int i = 0; i < 4; ++i)
|
||||||
|
{
|
||||||
|
nodes.add(nodeService.createNode(channel.getNodeRef(), ContentModel.ASSOC_CONTAINS, QName.createQName(
|
||||||
|
NamespaceService.CONTENT_MODEL_1_0_URI, Integer.toString(i)), ContentModel.TYPE_CONTENT).getChildRef());
|
||||||
|
}
|
||||||
|
PublishingQueue liveQueue = publishingService.getPublishingQueue(siteId);
|
||||||
|
MutablePublishingPackage publishingPackage = liveQueue.createPublishingPackage();
|
||||||
|
publishingPackage.addNodesToPublish(nodes);
|
||||||
|
|
||||||
|
Calendar scheduleTime = Calendar.getInstance();
|
||||||
|
scheduleTime.add(Calendar.HOUR, 1);
|
||||||
|
String eventId = liveQueue.scheduleNewEvent(publishingPackage, channel.getId(), scheduleTime, null, null);
|
||||||
|
PublishingEvent event = publishingService.getPublishingEvent(eventId);
|
||||||
|
Assert.assertNotNull(event);
|
||||||
|
publishingService.cancelPublishingEvent(eventId);
|
||||||
|
event = publishingService.getPublishingEvent(eventId);
|
||||||
|
Assert.assertNull(event);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws java.lang.Exception
|
* @throws java.lang.Exception
|
||||||
*/
|
*/
|
||||||
@@ -106,62 +163,4 @@ public class PublishingIntegratedTest extends BaseSpringTest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
}
|
||||||
public void testScheduleNewEvent() throws Exception
|
|
||||||
{
|
|
||||||
Channel channel = channelService.createChannel(siteId, channelTypeName, channelName, null);
|
|
||||||
|
|
||||||
Set<NodeRef> nodes = new HashSet<NodeRef>();
|
|
||||||
for (int i = 0; i < 4; ++i)
|
|
||||||
{
|
|
||||||
nodes.add(nodeService.createNode(channel.getNodeRef(), ContentModel.ASSOC_CONTAINS, QName.createQName(
|
|
||||||
NamespaceService.CONTENT_MODEL_1_0_URI, Integer.toString(i)), ContentModel.TYPE_CONTENT).getChildRef());
|
|
||||||
}
|
|
||||||
|
|
||||||
PublishingQueue liveQueue = publishingService.getPublishingQueue(siteId);
|
|
||||||
MutablePublishingPackage publishingPackage = liveQueue.createPublishingPackage();
|
|
||||||
publishingPackage.addNodesToPublish(nodes);
|
|
||||||
|
|
||||||
Calendar scheduleTime = Calendar.getInstance();
|
|
||||||
scheduleTime.add(Calendar.HOUR, 1);
|
|
||||||
String eventId = liveQueue.scheduleNewEvent(publishingPackage, channelName, scheduleTime, null, null);
|
|
||||||
|
|
||||||
PublishingEvent event = publishingService.getPublishingEvent(eventId);
|
|
||||||
|
|
||||||
Assert.assertEquals(scheduleTime, event.getScheduledTime());
|
|
||||||
Assert.assertEquals(eventId, event.getId());
|
|
||||||
Collection<PublishingPackageEntry> entries = event.getPackage().getEntries();
|
|
||||||
Assert.assertEquals(4, entries.size());
|
|
||||||
for (PublishingPackageEntry entry : entries)
|
|
||||||
{
|
|
||||||
Assert.assertTrue(entry.isPublish());
|
|
||||||
Assert.assertTrue(nodes.remove(entry.getNodeRef()));
|
|
||||||
}
|
|
||||||
Assert.assertTrue(nodes.isEmpty());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testCancelScheduledEvent()
|
|
||||||
{
|
|
||||||
Channel channel = channelService.createChannel(siteId, channelTypeName, channelName, null);
|
|
||||||
|
|
||||||
Set<NodeRef> nodes = new HashSet<NodeRef>();
|
|
||||||
for (int i = 0; i < 4; ++i)
|
|
||||||
{
|
|
||||||
nodes.add(nodeService.createNode(channel.getNodeRef(), ContentModel.ASSOC_CONTAINS, QName.createQName(
|
|
||||||
NamespaceService.CONTENT_MODEL_1_0_URI, Integer.toString(i)), ContentModel.TYPE_CONTENT).getChildRef());
|
|
||||||
}
|
|
||||||
PublishingQueue liveQueue = publishingService.getPublishingQueue(siteId);
|
|
||||||
MutablePublishingPackage publishingPackage = liveQueue.createPublishingPackage();
|
|
||||||
publishingPackage.addNodesToPublish(nodes);
|
|
||||||
|
|
||||||
Calendar scheduleTime = Calendar.getInstance();
|
|
||||||
scheduleTime.add(Calendar.HOUR, 1);
|
|
||||||
String eventId = liveQueue.scheduleNewEvent(publishingPackage, channelName, scheduleTime, null, null);
|
|
||||||
PublishingEvent event = publishingService.getPublishingEvent(eventId);
|
|
||||||
Assert.assertNotNull(event);
|
|
||||||
publishingService.cancelPublishingEvent(eventId);
|
|
||||||
event = publishingService.getPublishingEvent(eventId);
|
|
||||||
Assert.assertNull(event);
|
|
||||||
}
|
|
||||||
}
|
|
@@ -72,7 +72,6 @@ public interface PublishingModel
|
|||||||
public static final QName PROP_ASSET_ID = QName.createQName(NAMESPACE, "assetId");
|
public static final QName PROP_ASSET_ID = QName.createQName(NAMESPACE, "assetId");
|
||||||
public static final QName PROP_ASSET_URL = QName.createQName(NAMESPACE, "assetUrl");
|
public static final QName PROP_ASSET_URL = QName.createQName(NAMESPACE, "assetUrl");
|
||||||
|
|
||||||
|
|
||||||
// Publishing Connection Properties
|
// Publishing Connection Properties
|
||||||
public static final QName PROP_ACCOUNT_ID= QName.createQName(NAMESPACE, "accountId");
|
public static final QName PROP_ACCOUNT_ID= QName.createQName(NAMESPACE, "accountId");
|
||||||
public static final QName PROP_PROVIDER_ID= QName.createQName(NAMESPACE, "providerId");
|
public static final QName PROP_PROVIDER_ID= QName.createQName(NAMESPACE, "providerId");
|
||||||
@@ -92,7 +91,7 @@ public interface PublishingModel
|
|||||||
public static final QName ASSOC_PUBLISHING_EVENT = QName.createQName(NAMESPACE, "publishingEventAssoc");
|
public static final QName ASSOC_PUBLISHING_EVENT = QName.createQName(NAMESPACE, "publishingEventAssoc");
|
||||||
public static final QName ASSOC_SOURCE = QName.createQName(NAMESPACE, "source");
|
public static final QName ASSOC_SOURCE = QName.createQName(NAMESPACE, "source");
|
||||||
public static final QName ASSOC_LAST_PUBLISHING_EVENT= QName.createQName(NAMESPACE, "lastPublishingEvent");
|
public static final QName ASSOC_LAST_PUBLISHING_EVENT= QName.createQName(NAMESPACE, "lastPublishingEvent");
|
||||||
public static final QName ASSOC_EDITORIAL_CHANNEL= QName.createQName(NAMESPACE, "editorialChannel");
|
public static final QName ASSOC_PUBLISHED_CHANNEL= QName.createQName(NAMESPACE, "publishedChannel");
|
||||||
|
|
||||||
// Workflow Properties
|
// Workflow Properties
|
||||||
public static final QName PROP_WF_PUBLISHING_EVENT= QName.createQName(WF_NAMESPACE, "publishingEvent");
|
public static final QName PROP_WF_PUBLISHING_EVENT= QName.createQName(WF_NAMESPACE, "publishingEvent");
|
||||||
|
@@ -47,7 +47,7 @@ public class PublishingQueueImpl implements PublishingQueue
|
|||||||
private TransferManifestNodeFactory transferManifestNodeFactory;
|
private TransferManifestNodeFactory transferManifestNodeFactory;
|
||||||
private VersionService versionService;
|
private VersionService versionService;
|
||||||
private PublishingEventHelper publishingEventHelper;
|
private PublishingEventHelper publishingEventHelper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
@@ -73,13 +73,29 @@ public class PublishingQueueImpl implements PublishingQueue
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public List<PublishingEvent> getPublishingEvents(PublishingEventFilter filter)
|
||||||
|
{
|
||||||
|
return publishingEventHelper.findPublishingEvents(nodeRef, filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
public PublishingEventFilter createPublishingEventFilter()
|
||||||
|
{
|
||||||
|
return new PublishingEventFilterImpl();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public String scheduleNewEvent(PublishingPackage publishingPackage, String channelName, Calendar schedule, String comment, StatusUpdate statusUpdate)
|
public String scheduleNewEvent(PublishingPackage publishingPackage, String channelId, Calendar schedule, String comment, StatusUpdate statusUpdate)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
NodeRef eventNode = publishingEventHelper.createNode(nodeRef, publishingPackage, channelName, schedule, comment, statusUpdate);
|
NodeRef eventNode = publishingEventHelper.createNode(nodeRef, publishingPackage, channelId, schedule, comment, statusUpdate);
|
||||||
publishingEventHelper.startPublishingWorkflow(eventNode, schedule);
|
publishingEventHelper.startPublishingWorkflow(eventNode, schedule);
|
||||||
return eventNode.toString();
|
return eventNode.toString();
|
||||||
}
|
}
|
||||||
@@ -123,19 +139,5 @@ public class PublishingQueueImpl implements PublishingQueue
|
|||||||
this.versionService = versionService;
|
this.versionService = versionService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
public List<PublishingEvent> getPublishingEvents(PublishingEventFilter filter)
|
|
||||||
{
|
|
||||||
return publishingEventHelper.findPublishingEvents(nodeRef, filter);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@inheritDoc}
|
|
||||||
*/
|
|
||||||
public PublishingEventFilter createPublishingEventFilter()
|
|
||||||
{
|
|
||||||
return new PublishingEventFilterImpl();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -55,7 +55,7 @@ import org.junit.Test;
|
|||||||
*/
|
*/
|
||||||
public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest
|
public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest
|
||||||
{
|
{
|
||||||
private static final String channelName = "TheChannel";
|
private static final String channelId = "test://channel/node";
|
||||||
private static final String comment = "The Comment";
|
private static final String comment = "The Comment";
|
||||||
|
|
||||||
protected PublishingService publishingService;
|
protected PublishingService publishingService;
|
||||||
@@ -82,7 +82,7 @@ public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest
|
|||||||
Calendar schedule = Calendar.getInstance();
|
Calendar schedule = Calendar.getInstance();
|
||||||
schedule.add(Calendar.HOUR, 2);
|
schedule.add(Calendar.HOUR, 2);
|
||||||
|
|
||||||
this.eventId = queue.scheduleNewEvent(publishingPackage, channelName, schedule, comment, null);
|
this.eventId = queue.scheduleNewEvent(publishingPackage, channelId, schedule, comment, null);
|
||||||
|
|
||||||
//Check schedule triggered versioning.
|
//Check schedule triggered versioning.
|
||||||
Serializable version = nodeService.getProperty(firstNode, PROP_VERSION_LABEL);
|
Serializable version = nodeService.getProperty(firstNode, PROP_VERSION_LABEL);
|
||||||
@@ -94,7 +94,7 @@ public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest
|
|||||||
assertEquals(Status.SCHEDULED, event.getStatus());
|
assertEquals(Status.SCHEDULED, event.getStatus());
|
||||||
assertEquals(AuthenticationUtil.getAdminUserName(), event.getCreator());
|
assertEquals(AuthenticationUtil.getAdminUserName(), event.getCreator());
|
||||||
assertEquals(schedule, event.getScheduledTime());
|
assertEquals(schedule, event.getScheduledTime());
|
||||||
assertEquals(channelName, event.getChannelName());
|
assertEquals(channelId, event.getChannelId());
|
||||||
assertNull(event.getStatusUpdate());
|
assertNull(event.getStatusUpdate());
|
||||||
|
|
||||||
PublishingPackage pckg = event.getPackage();
|
PublishingPackage pckg = event.getPackage();
|
||||||
@@ -151,13 +151,13 @@ public class PublishingQueueImplTest extends AbstractPublishingIntegrationTest
|
|||||||
publishingPackage.addNodesToPublish(firstNode, secondNode);
|
publishingPackage.addNodesToPublish(firstNode, secondNode);
|
||||||
Calendar schedule = Calendar.getInstance();
|
Calendar schedule = Calendar.getInstance();
|
||||||
schedule.add(Calendar.HOUR, 2);
|
schedule.add(Calendar.HOUR, 2);
|
||||||
this.eventId = queue.scheduleNewEvent(publishingPackage, channelName, schedule, comment, update);
|
this.eventId = queue.scheduleNewEvent(publishingPackage, channelId, schedule, comment, update);
|
||||||
|
|
||||||
PublishingEvent event = publishingService.getPublishingEvent(eventId);
|
PublishingEvent event = publishingService.getPublishingEvent(eventId);
|
||||||
StatusUpdate actualUpdate = event.getStatusUpdate();
|
StatusUpdate actualUpdate = event.getStatusUpdate();
|
||||||
assertEquals(message, actualUpdate.getMessage());
|
assertEquals(message, actualUpdate.getMessage());
|
||||||
assertEquals(secondNode, actualUpdate.getNodeToLinkTo());
|
assertEquals(secondNode, actualUpdate.getNodeToLinkTo());
|
||||||
Set<String> names = actualUpdate.getChannelNames();
|
Set<String> names = actualUpdate.getChannelIds();
|
||||||
assertEquals(3, names.size());
|
assertEquals(3, names.size());
|
||||||
assertTrue(names.containsAll(channelNames));
|
assertTrue(names.containsAll(channelNames));
|
||||||
}
|
}
|
||||||
|
@@ -57,7 +57,7 @@ public class StatusUpdateImpl implements StatusUpdate
|
|||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
*/
|
*/
|
||||||
public Set<String> getChannelNames()
|
public Set<String> getChannelIds()
|
||||||
{
|
{
|
||||||
return channelNames;
|
return channelNames;
|
||||||
}
|
}
|
||||||
|
@@ -51,7 +51,7 @@ public interface PublishingEvent
|
|||||||
|
|
||||||
MutablePublishingEvent edit();
|
MutablePublishingEvent edit();
|
||||||
|
|
||||||
String getChannelName();
|
String getChannelId();
|
||||||
|
|
||||||
StatusUpdate getStatusUpdate();
|
StatusUpdate getStatusUpdate();
|
||||||
}
|
}
|
||||||
|
@@ -34,19 +34,19 @@ public interface PublishingQueue
|
|||||||
*/
|
*/
|
||||||
MutablePublishingPackage createPublishingPackage();
|
MutablePublishingPackage createPublishingPackage();
|
||||||
|
|
||||||
StatusUpdate createStatusUpdate(String message, NodeRef nodeToLinkTo, String... channelNames);
|
StatusUpdate createStatusUpdate(String message, NodeRef nodeToLinkTo, String... channelIds);
|
||||||
StatusUpdate createStatusUpdate(String message, NodeRef nodeToLinkTo, Collection<String> channelNames);
|
StatusUpdate createStatusUpdate(String message, NodeRef nodeToLinkTo, Collection<String> channelIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the supplied publishing package onto the queue.
|
* Adds the supplied publishing package onto the queue.
|
||||||
* @param publishingPackage The publishing package that is to be enqueued
|
* @param publishingPackage The publishing package that is to be enqueued
|
||||||
* @param channelName The name of the channel that the package is to be published to
|
* @param channelId The name of the channel that the package is to be published to
|
||||||
* @param schedule The time at which the new publishing event should be scheduled (optional - <code>null</code> indicates "as soon as possible")
|
* @param schedule The time at which the new publishing event should be scheduled (optional - <code>null</code> indicates "as soon as possible")
|
||||||
* @param comment A comment to be stored with this new event (optional - may be <code>null</code>)
|
* @param comment A comment to be stored with this new event (optional - may be <code>null</code>)
|
||||||
* @param statusUpdate TODO
|
* @param statusUpdate TODO
|
||||||
* @return The identifier of the newly scheduled event
|
* @return The identifier of the newly scheduled event
|
||||||
*/
|
*/
|
||||||
String scheduleNewEvent(PublishingPackage publishingPackage, String channelName, Calendar schedule, String comment, StatusUpdate statusUpdate);
|
String scheduleNewEvent(PublishingPackage publishingPackage, String channelId, Calendar schedule, String comment, StatusUpdate statusUpdate);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve a list of publishing events associated with this publishing environment, filtering them using the
|
* Retrieve a list of publishing events associated with this publishing environment, filtering them using the
|
||||||
|
@@ -31,6 +31,6 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
|||||||
public interface StatusUpdate
|
public interface StatusUpdate
|
||||||
{
|
{
|
||||||
String getMessage();
|
String getMessage();
|
||||||
Set<String> getChannelNames();
|
Set<String> getChannelIds();
|
||||||
NodeRef getNodeToLinkTo();
|
NodeRef getNodeToLinkTo();
|
||||||
}
|
}
|
||||||
|
@@ -31,6 +31,7 @@ import org.alfresco.service.namespace.QName;
|
|||||||
*/
|
*/
|
||||||
public interface Channel
|
public interface Channel
|
||||||
{
|
{
|
||||||
|
String getId();
|
||||||
ChannelType getChannelType();
|
ChannelType getChannelType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user