diff --git a/src/main/java/org/olat/modules/fo/restapi/ForumWebService.java b/src/main/java/org/olat/modules/fo/restapi/ForumWebService.java index 627035b2c5ce356fb2795cda30703e65ae0e067a..890a91fe1114f378eaa1d03b30c38fe3259fbc00 100644 --- a/src/main/java/org/olat/modules/fo/restapi/ForumWebService.java +++ b/src/main/java/org/olat/modules/fo/restapi/ForumWebService.java @@ -28,6 +28,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.URI; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -51,6 +52,7 @@ import javax.ws.rs.core.Request; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.StreamingOutput; +import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; import org.apache.commons.codec.binary.Base64; @@ -579,7 +581,12 @@ public class ForumWebService { VFSContainer container = fom.getMessageContainer(mess.getForum().getKey(), mess.getKey()); List<FileVO> attachments = new ArrayList<FileVO>(); for(VFSItem item: container.getItems(new SystemItemFilter())) { - String uri = uriInfo.getAbsolutePathBuilder().path(format(item.getName())).build().toString(); + UriBuilder attachmentUri = uriInfo.getBaseUriBuilder().path("repo") + .path("forums").path(mess.getForum().getKey().toString()) + .path("posts").path(mess.getKey().toString()) + .path("attachments").path(format(item.getName())); + + String uri = attachmentUri.build().toString(); if(item instanceof VFSLeaf) { attachments.add(new FileVO("self", uri, item.getName(), ((VFSLeaf)item).getSize())); } else { diff --git a/src/test/java/org/olat/restapi/ForumTest.java b/src/test/java/org/olat/restapi/ForumTest.java index e307c64a308f61d1b31657207a5558315f4ca235..3d08ee19f8df0ab1901266e21ac596a77fa8c40f 100644 --- a/src/test/java/org/olat/restapi/ForumTest.java +++ b/src/test/java/org/olat/restapi/ForumTest.java @@ -393,6 +393,17 @@ public class ForumTest extends OlatJerseyTestCase { assertNotNull(message.getAttachments()); assertEquals(2, message.getAttachments().length); + for(FileVO attachment:message.getAttachments()) { + String title = attachment.getTitle(); + assertNotNull(title); + String href = attachment.getHref(); + URI attachmentUri = new URI(href); + GetMethod getAttachment = createGet(attachmentUri, "*/*", true); + int attachmentCode = c.executeMethod(getAttachment); + assertEquals(200, attachmentCode); + } + + //check if the file exists ForumManager fm = ForumManager.getInstance(); VFSContainer container = fm.getMessageContainer(message.getForumKey(), message.getKey());