Browse Source

PersonIdent: Document that name and email aren't trimmed

This might be somewhat surprising behavior to users who might
naturally assume the following invariant:
  ident.equals(parseIdent(ident.toExternalString()))

This invariant does not hold since whitespace is only trimmed during
serialization. We don't want to mess with the strings during
initialization, as this is called during the highly-optimized commit
parsing codepath.

Change-Id: I081a603f0ac0e33167462244779b0ff3ad51e80c
stable-4.4
Dave Borowitz 9 years ago
parent
commit
773f9661d0
  1. 4
      org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java
  2. 7
      org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java

4
org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java

@ -92,8 +92,10 @@ public class T0001_PersonIdentTest {
PersonIdent personIdent = new PersonIdent(" A U Thor ",
" author@example.com ");
String externalString = personIdent.toExternalString();
assertEquals(" A U Thor ", personIdent.getName());
assertEquals(" author@example.com ", personIdent.getEmailAddress());
String externalString = personIdent.toExternalString();
assertTrue(externalString.startsWith("A U Thor <author@example.com>"));
}

7
org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java

@ -217,7 +217,12 @@ public class PersonIdent implements Serializable {
}
/**
* Construct a {@link PersonIdent}
* Construct a {@link PersonIdent}.
* <p>
* Whitespace in the name and email is preserved for the lifetime of this
* object, but are trimmed by {@link #toExternalString()}. This means that
* parsing the result of {@link #toExternalString()} may not return an
* equivalent instance.
*
* @param aName
* @param aEmailAddress

Loading…
Cancel
Save