Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java,v diff -u -r1.65 -r1.66 --- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java 1 Feb 2008 06:24:36 -0000 1.65 +++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java 10 Mar 2008 07:56:01 -0000 1.66 @@ -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; }