diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java index 0d6efd18656106946c9f9516cc08a73c0fa1aefc..c70410e55d172379526c66883ee78d009d2eaecb 100644 --- a/src/main/java/org/olat/course/run/RunMainController.java +++ b/src/main/java/org/olat/course/run/RunMainController.java @@ -1094,7 +1094,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene // 1) administrative tools if (isCourseAdmin || isCourseCoach || hasCourseRight(CourseRights.RIGHT_COURSEEDITOR) || hasCourseRight(CourseRights.RIGHT_GROUPMANAGEMENT) || hasCourseRight(CourseRights.RIGHT_ARCHIVING) - || hasCourseRight(CourseRights.RIGHT_ASSESSMENT) || hasCourseRight(CourseRights.RIGHT_DB) + || hasCourseRight(CourseRights.RIGHT_STATISTICS) || hasCourseRight(CourseRights.RIGHT_DB) || hasCourseRight(CourseRights.RIGHT_ASSESSMENT)) { myTool.addHeader(translate("header.tools")); if (hasCourseRight(CourseRights.RIGHT_COURSEEDITOR) || isCourseAdmin) { diff --git a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java index b46f93573b29dca446cf3a566b9414489b30a154..67c85d7c4b2975e7c2f286ef2d7cc6116914ee16 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java @@ -194,10 +194,10 @@ public class BusinessGroupDAO { StringBuilder sb = new StringBuilder(); sb.append("select bgi from ").append(BusinessGroupImpl.class.getName()).append(" bgi ") - .append(" left join fetch bgi.ownerGroup ownerGroup") - .append(" left join fetch bgi.partipiciantGroup participantGroup") - .append(" left join fetch bgi.waitingGroup waitingGroup") - .append(" left join fetch bgi.resource resource") + .append(" inner join fetch bgi.ownerGroup ownerGroup") + .append(" inner join fetch bgi.partipiciantGroup participantGroup") + .append(" inner join fetch bgi.waitingGroup waitingGroup") + .append(" inner join fetch bgi.resource resource") .append(" where bgi.key=:key"); return em.createQuery(sb.toString(), BusinessGroup.class) diff --git a/src/main/java/org/olat/modules/fo/restapi/MessageVO.java b/src/main/java/org/olat/modules/fo/restapi/MessageVO.java index 7bccc8b37d8095704ea69db25cc3e55bb3a06346..f632b73915cbf9bc1d747bfb5237f25e0d5b17f1 100644 --- a/src/main/java/org/olat/modules/fo/restapi/MessageVO.java +++ b/src/main/java/org/olat/modules/fo/restapi/MessageVO.java @@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRootElement; import org.olat.core.id.Identity; import org.olat.core.id.UserConstants; import org.olat.modules.fo.Message; +import org.olat.modules.fo.Status; import org.olat.restapi.support.vo.FileVO; /** @@ -50,6 +51,7 @@ public class MessageVO { private Long modifierKey; private String modifier; private String modifierName; + private Boolean sticky; private String title; private String body; @@ -81,6 +83,9 @@ public class MessageVO { forumKey = message.getForum().getKey(); title = message.getTitle(); body = message.getBody(); + + Status messageStatus = Status.getStatus(message.getStatusCode()); + sticky = new Boolean(messageStatus.isSticky()); } public Long getKey() { @@ -155,6 +160,14 @@ public class MessageVO { this.modifierName = modifierName; } + public Boolean getSticky() { + return sticky; + } + + public void setSticky(Boolean sticky) { + this.sticky = sticky; + } + public String getTitle() { return title; } diff --git a/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java b/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java index 70c2810bd2f4c98047fd6cc931f71ac9897ae604..3add0ca08047acd28aee63eee2ce194610bd7a7b 100644 --- a/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java +++ b/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java @@ -135,9 +135,7 @@ public class RestApiLoginFilter implements Filter { ThreadLocalUserActivityLoggerInstaller.resetUserActivityLogger(); I18nManager.remove18nInfoFromThread(); Tracing.setUreq(null); - - DBFactory.getInstance().commit(); - DBFactory.getInstance().closeSession(); + DBFactory.getInstance().commitAndCloseSession(); } } else { throw new ServletException("Only accept HTTP Request"); diff --git a/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java b/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java index 7d54a02ba3a8ccac8eb7fc527192ff28f1ebfd66..c03c487e610ea83ec335ec1fbf74d899144714ee 100644 --- a/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java +++ b/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java @@ -47,6 +47,7 @@ import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; +import org.apache.http.util.EntityUtils; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; import org.junit.After; @@ -241,7 +242,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase { HttpPost method = conn.createPost(request, MediaType.APPLICATION_JSON, true); conn.addJsonEntity(method, vo); HttpResponse response = conn.execute(method); - + EntityUtils.consume(response.getEntity()); assertTrue(response.getStatusLine().getStatusCode() == 200 || response.getStatusLine().getStatusCode() == 201); BusinessGroup bg = businessGroupService.loadBusinessGroup(g1.getKey()); @@ -258,7 +259,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase { URI request = UriBuilder.fromUri(getContextURI()).path("/repo/courses/" + courseRepoEntry.getResourceableId() + "/groups/" + g1.getKey()).build(); HttpDelete method = conn.createDelete(request, MediaType.APPLICATION_JSON, true); HttpResponse response = conn.execute(method); - + EntityUtils.consume(response.getEntity()); assertEquals(200, response.getStatusLine().getStatusCode()); BusinessGroup bg = businessGroupService.loadBusinessGroup(g1.getKey()); @@ -272,6 +273,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase { URI request = UriBuilder.fromUri(getContextURI()).path("/repo/courses/" + courseRepoEntry.getResourceableId() + "/groups/" + g2.getKey()).build(); HttpDelete method = conn.createDelete(request, MediaType.APPLICATION_JSON, true); HttpResponse response = conn.execute(method); + EntityUtils.consume(response.getEntity()); assertEquals(401, response.getStatusLine().getStatusCode()); } @@ -291,6 +293,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase { conn.addJsonEntity(method, vo); HttpResponse response = conn.execute(method); + EntityUtils.consume(response.getEntity()); assertEquals(401, response.getStatusLine().getStatusCode()); }