Project

General

Profile

« Previous | Next » 

Revision 7060

check group membership defined at group level (in addition to membership defined as part of of the Person level)
https://redmine.dataone.org/issues/2429

View differences:

src/edu/ucsb/nceas/metacat/dataone/D1NodeService.java
741 741
		if (subjectInfo != null) {
742 742
			// find subjectInfo for the primary subject
743 743
			List<Person> personList = subjectInfo.getPersonList();
744
			List<Group> groupList = subjectInfo.getGroupList();
744 745
			if (personList != null) {
745 746
				for (Person p : personList) {
746 747
					  // for every person listed (isVerified is transitive)
......
760 761
								subjects.add(equiv);
761 762
							}
762 763
						}
763
						// add the groups
764
						List<Subject> groupList = p.getIsMemberOfList();
765
						if (groupList != null) {
766
							for (Subject g : groupList) {
764
						// add the groups they are a member of
765
						List<Subject> memberOfList = p.getIsMemberOfList();
766
						if (memberOfList != null) {
767
							for (Subject g : memberOfList) {
767 768
								subjects.add(g);
768 769
							}
769 770
						}
771
						// look at all the Groups to see if this person has membership defined there
772
						if (groupList != null) {
773
							for (Group group: groupList) {
774
								if (group.getHasMemberList() != null) {
775
									for (Subject member: group.getHasMemberList()) {
776
										// is the person a member?
777
										if (member.equals(p.getSubject())) {
778
											// add this group as a subject to check if it is not already there
779
											if (!subjects.contains(group.getSubject())) {
780
												subjects.add(group.getSubject());
781
											}
782
										}
783
									}
784
								}
785
							}
786
						}
770 787
						break;
771 788
				}
772 789
			}

Also available in: Unified diff