From ffc845db77044b3380695dfc1673910dd0929b07 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 13 May 2015 08:59:37 +0200
Subject: [PATCH] OO-1546: hardened the remove method against unexpected case,
 identity not participant, don't remove the last user without check it...

---
 .../java/de/bps/course/nodes/den/DENManager.java | 16 ++++++----------
 1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/src/main/java/de/bps/course/nodes/den/DENManager.java b/src/main/java/de/bps/course/nodes/den/DENManager.java
index b008093fa1e..17258bb9c52 100644
--- a/src/main/java/de/bps/course/nodes/den/DENManager.java
+++ b/src/main/java/de/bps/course/nodes/den/DENManager.java
@@ -199,21 +199,17 @@ public class DENManager {
 		//cancel enroll in calendar entry
 		if(event.getParticipants() != null) {
 			int currLength = event.getParticipants().length;
-			if (currLength > 1) {
+			if (currLength > 0) {
 				//more than one are enrolled
-				String[] partsNew = new String[currLength - 1]; //one to delete
+				List<String> partsNew = new ArrayList<>(currLength); //one to delete
 				String[] partsOld = event.getParticipants();
 				String identityName = identity.getName();
-				for (int i = 0, j = 0; i < partsOld.length; i++) {
-					if ( !(partsOld[i].equals(identityName)) ) {
-						partsNew[j] = partsOld[i];
-						j++; //only increment if new entry was made
+				for (String  partOld:partsOld) {
+					if (!partOld.equals(identityName)) {
+						partsNew.add(partOld);
 					}
 				}
-				event.setParticipants(partsNew);
-			} else if (currLength == 1) {
-				//only one is enrolled, only simple reset needed
-				event.setParticipants(new String[0]);
+				event.setParticipants(partsNew.toArray(new String[partsNew.size()]));
 			}
 			//save calendar event
 			boolean successfullyDone = calManager.updateEventFrom(cal, event);
-- 
GitLab