From 773f9661d0634fb3ad69466c0f0ec4d65cb2122d Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Fri, 29 Apr 2016 10:47:17 -0400 Subject: [PATCH] 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 --- .../tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java | 4 +++- org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java index 1515a07ac4..48d2c480a9 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_PersonIdentTest.java +++ b/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 ")); } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java index 2ecc60c3b6..aa304634ba 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/PersonIdent.java +++ b/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}. + *

+ * 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 -- 2.39.5