diff --git a/config/alfresco/links-services-context.xml b/config/alfresco/links-services-context.xml index fc8450c481..ece0e320fb 100644 --- a/config/alfresco/links-services-context.xml +++ b/config/alfresco/links-services-context.xml @@ -55,6 +55,7 @@ + diff --git a/source/java/org/alfresco/repo/links/LinksServiceImpl.java b/source/java/org/alfresco/repo/links/LinksServiceImpl.java index 0f55e43281..9282d41ca6 100644 --- a/source/java/org/alfresco/repo/links/LinksServiceImpl.java +++ b/source/java/org/alfresco/repo/links/LinksServiceImpl.java @@ -40,6 +40,8 @@ import org.alfresco.repo.site.SiteServiceImpl; import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.links.LinkInfo; import org.alfresco.service.cmr.links.LinksService; +import org.alfresco.service.cmr.repository.ContentService; +import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter; @@ -79,6 +81,7 @@ public class LinksServiceImpl implements LinksService private NodeService nodeService; private SiteService siteService; private SearchService searchService; + private ContentService contentService; private TaggingService taggingService; private NamespaceService namespaceService; private DictionaryService dictionaryService; @@ -105,6 +108,11 @@ public class LinksServiceImpl implements LinksService this.searchService = searchService; } + public void setContentService(ContentService contentService) + { + this.contentService = contentService; + } + public void setTaggingService(TaggingService taggingService) { this.taggingService = taggingService; @@ -232,6 +240,11 @@ public class LinksServiceImpl implements LinksService props ).getChildRef(); + // Duplicate the url into the node as the content property + ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); + writer.setEncoding("UTF-8"); + writer.putContent(url); + // Generate the wrapping object for it // Build it that way, so creator and created date come through return buildLink(nodeRef, container, name); @@ -270,6 +283,11 @@ public class LinksServiceImpl implements LinksService } } + // Duplicate the url into the node as the content property + ContentWriter writer = contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); + writer.setEncoding("UTF-8"); + writer.putContent(link.getURL()); + // Now do the tags taggingService.setTags(nodeRef, link.getTags()); diff --git a/source/java/org/alfresco/repo/links/LinksServiceImplTest.java b/source/java/org/alfresco/repo/links/LinksServiceImplTest.java index 52c316f9db..4de4a32757 100644 --- a/source/java/org/alfresco/repo/links/LinksServiceImplTest.java +++ b/source/java/org/alfresco/repo/links/LinksServiceImplTest.java @@ -37,6 +37,7 @@ import org.alfresco.repo.transaction.RetryingTransactionHelper; import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback; import org.alfresco.service.cmr.links.LinkInfo; import org.alfresco.service.cmr.links.LinksService; +import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.security.MutableAuthenticationService; @@ -78,6 +79,7 @@ public class LinksServiceImplTest private static RetryingTransactionHelper TRANSACTION_HELPER; private static PermissionService PERMISSION_SERVICE; private static SiteService SITE_SERVICE; + private static ContentService CONTENT_SERVICE; private static TaggingService TAGGING_SERVICE; private static final String TEST_USER = LinksServiceImplTest.class.getSimpleName() + "_testuser"; @@ -106,6 +108,7 @@ public class LinksServiceImplTest TRANSACTION_HELPER = (RetryingTransactionHelper)testContext.getBean("retryingTransactionHelper"); PERMISSION_SERVICE = (PermissionService)testContext.getBean("permissionService"); SITE_SERVICE = (SiteService)testContext.getBean("siteService"); + CONTENT_SERVICE = (ContentService)testContext.getBean("ContentService"); TAGGING_SERVICE = (TaggingService)testContext.getBean("TaggingService"); // Do the setup as admin @@ -197,6 +200,14 @@ public class LinksServiceImplTest assertEquals(0, link.getTags().size()); + // Check the underlying node + assertEquals("Title", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_TITLE)); + assertEquals("Description", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_DESCRIPTION)); + assertEquals("http://www.alfresco.com/", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_URL)); + assertEquals("http://www.alfresco.com/", CONTENT_SERVICE.getReader(link.getNodeRef(), ContentModel.PROP_CONTENT).getContentString()); + assertEquals(false, NODE_SERVICE.hasAspect(link.getNodeRef(), LinksModel.ASPECT_INTERNAL_LINK)); + + // Change it link.setTitle("New Title"); link.setURL("http://share.alfresco.com/"); @@ -215,6 +226,14 @@ public class LinksServiceImplTest assertEquals(0, link.getTags().size()); + // Check the underlying node now + assertEquals("New Title", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_TITLE)); + assertEquals("Description", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_DESCRIPTION)); + assertEquals("http://share.alfresco.com/", NODE_SERVICE.getProperty(link.getNodeRef(), LinksModel.PROP_URL)); + assertEquals("http://share.alfresco.com/", CONTENT_SERVICE.getReader(link.getNodeRef(), ContentModel.PROP_CONTENT).getContentString()); + assertEquals(true, NODE_SERVICE.hasAspect(link.getNodeRef(), LinksModel.ASPECT_INTERNAL_LINK)); + + // Delete it LINKS_SERVICE.deleteLink(link);