Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java =================================================================== diff -u -rbfa0d6c3a6e19b01dffc488bcc18c8d0ed2cfdaf -rd15ce671fcda1460b3c7451f66d2b44b3cf7d97f --- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision bfa0d6c3a6e19b01dffc488bcc18c8d0ed2cfdaf) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision d15ce671fcda1460b3c7451f66d2b44b3cf7d97f) @@ -586,15 +586,34 @@ if (keyExists(groupingDetails,WDDXTAGS.MAX_NUMBER_OF_GROUPS)) grouping.setMaxNumberOfGroups(WDDXProcessor.convertToInteger(groupingDetails,WDDXTAGS.MAX_NUMBER_OF_GROUPS)); + Set groupsToDelete = new HashSet(grouping.getGroups()); + List groupsList = (Vector)groupingDetails.get(WDDXTAGS.GROUPS); if ( groupsList != null && groupsList.size() > 0 ) { Iterator iter = groupsList.iterator(); while ( iter.hasNext() ) { Hashtable groupDetails = (Hashtable)iter.next(); Group group = extractGroupObject(groupDetails, grouping); groups.put(group.getGroupUIID(), group); + groupsToDelete.remove(group); } } + + if ( groupsToDelete.size() > 0 ) { + Iterator iter = groupsToDelete.iterator(); + while ( iter.hasNext() ) { + Group group = (Group) iter.next(); + if ( group.getBranchActivities() != null ) { + Iterator branchIter = group.getBranchActivities().iterator(); + while ( branchIter.hasNext() ) { + BranchActivityEntry entry = (BranchActivityEntry) branchIter.next(); + entry.setGroup(null); + } + group.getBranchActivities().clear(); + } + grouping.getGroups().remove(group); + } + } return grouping; }