Matt Ward
2016-12-15 11:51:07 +00:00
parent 99b7e71d44
commit 65849b1f8d
2 changed files with 49 additions and 3 deletions

View File

@@ -594,6 +594,11 @@ public class PeopleImpl implements People
savePersonDescription(person.getDescription(), personNodeRef); savePersonDescription(person.getDescription(), personNodeRef);
} }
// Update custom aspects - do this *before* adding custom properties. The
// addition of custom properties may result in the auto-addition of aspects
// and we don't want to remove them during the update of explicitly specified aspects.
nodes.updateCustomAspects(personNodeRef, person.getAspectNames(), EXCLUDED_ASPECTS);
// Add custom properties // Add custom properties
if (person.getProperties() != null) if (person.getProperties() != null)
{ {
@@ -612,9 +617,6 @@ public class PeopleImpl implements People
} }
}); });
// Update custom aspects
nodes.updateCustomAspects(personNodeRef, person.getAspectNames(), EXCLUDED_ASPECTS);
return getPerson(personId); return getPerson(personId);
} }

View File

@@ -751,6 +751,50 @@ public class TestPeople extends EnterpriseTestApi
assertNull(person.getProperties()); assertNull(person.getProperties());
} }
// Aspects and properties together
{
Person person = new Person();
String personId = UUID.randomUUID().toString()+"@"+account1.getId();
person.setUserName(personId);
person.setFirstName("Joe");
person.setEmail(personId);
person.setEnabled(true);
person.setPassword("password123");
// Start with no custom props/aspects
person.setProperties(null);
person.setAspectNames(null);
person = people.create(person);
assertNull(person.getAspectNames());
assertNull(person.getProperties());
// Auto-add the papi:comms aspect, by setting its papi:jabber property,
// but explicitly add the papi:lunchable aspect.
String json = qjson(
"{" +
" `aspectNames`: [ " +
" `papi:lunchable` " +
" ], " +
" `properties`: { " +
" `papi:jabber`: `another@jabber.example.com`, " +
" `papi:lunch`: `sandwich` " +
" }" +
"}"
);
person = people.update(person.getId(), json, 200);
// Were both aspects set?
List<String> aspectNames = person.getAspectNames();
assertEquals(2, aspectNames.size());
assertTrue(aspectNames.contains("papi:lunchable"));
assertTrue(aspectNames.contains("papi:comms"));
assertEquals(2, person.getProperties().size());
assertEquals("another@jabber.example.com", person.getProperties().get("papi:jabber"));
assertEquals("sandwich", person.getProperties().get("papi:lunch"));
}
// Remove a property by setting it to null // Remove a property by setting it to null
{ {
Person person = createTestUpdatePerson(); Person person = createTestUpdatePerson();