@@ -110,6 +110,12 @@ public final class AddressData {
110110 // part.
111111 private final List <String > addressLines ;
112112
113+ // The landmark affix.
114+ private final String landmarkAffix ;
115+
116+ // The landmark name.
117+ private final String landmarkName ;
118+
113119 // Top-level administrative subdivision of this country.
114120 private final String administrativeArea ;
115121
@@ -148,6 +154,8 @@ private AddressData(Builder builder) {
148154 this .sortingCode = builder .fields .get (AddressField .SORTING_CODE );
149155 this .organization = builder .fields .get (AddressField .ORGANIZATION );
150156 this .recipient = builder .fields .get (AddressField .RECIPIENT );
157+ this .landmarkAffix = builder .fields .get (AddressField .LANDMARK_AFFIX );
158+ this .landmarkName = builder .fields .get (AddressField .LANDMARK_NAME );
151159 this .addressLines = Collections .unmodifiableList (
152160 normalizeAddressLines (new ArrayList <String >(builder .addressLines )));
153161 this .languageCode = builder .language ;
@@ -197,14 +205,26 @@ public String toString() {
197205 for (String line : addressLines ) {
198206 output .append (line + "; " );
199207 }
200- output .append ("ADMIN_AREA=" + administrativeArea + "; "
201- + "LOCALITY=" + locality + "; "
202- + "DEPENDENT_LOCALITY=" + dependentLocality + "; "
203- + "POSTAL_CODE=" + postalCode + "; "
204- + "SORTING_CODE=" + sortingCode + "; "
205- + "ORGANIZATION=" + organization + "; "
206- + "RECIPIENT=" + recipient
207- + ")" );
208+ output
209+ .append ("ADMIN_AREA=" )
210+ .append (administrativeArea )
211+ .append ("; " + "LOCALITY=" )
212+ .append (locality )
213+ .append ("; " + "DEPENDENT_LOCALITY=" )
214+ .append (dependentLocality )
215+ .append ("; " + "POSTAL_CODE=" )
216+ .append (postalCode )
217+ .append ("; " + "SORTING_CODE=" )
218+ .append (sortingCode )
219+ .append ("; " + "ORGANIZATION=" )
220+ .append (organization )
221+ .append ("; " + "RECIPIENT=" )
222+ .append (recipient )
223+ .append ("; " + "LANDMARK_AFFIX=" )
224+ .append (landmarkAffix )
225+ .append ("; " + "LANDMARK_NAME=" )
226+ .append (landmarkName )
227+ .append (")" );
208228 return output .toString ();
209229 }
210230
@@ -247,7 +267,13 @@ public boolean equals(Object o) {
247267 : recipient .equals (addressData .getRecipient ()))
248268 && (languageCode == null
249269 ? addressData .getLanguageCode () == null
250- : languageCode .equals (addressData .getLanguageCode ()));
270+ : languageCode .equals (addressData .getLanguageCode ()))
271+ && (landmarkAffix == null
272+ ? addressData .getLandmarkAffix () == null
273+ : landmarkAffix .equals (addressData .getLandmarkAffix ()))
274+ && (landmarkName == null
275+ ? addressData .getLandmarkName () == null
276+ : landmarkName .equals (addressData .getLandmarkName ()));
251277 }
252278
253279 @ Override
@@ -265,7 +291,9 @@ public int hashCode() {
265291 sortingCode ,
266292 organization ,
267293 recipient ,
268- languageCode
294+ languageCode ,
295+ landmarkAffix ,
296+ landmarkName
269297 };
270298
271299 for (String field : fields ) {
@@ -436,6 +464,16 @@ public String getRecipient() {
436464 return recipient ;
437465 }
438466
467+ /** Returns the landmark affix. */
468+ public String getLandmarkAffix () {
469+ return landmarkAffix ;
470+ }
471+
472+ /** Returns the landmark name. */
473+ public String getLandmarkName () {
474+ return landmarkName ;
475+ }
476+
439477 /**
440478 * Returns a value for those address fields which map to a single string value.
441479 * <p>
@@ -472,6 +510,10 @@ public String getFieldValue(AddressField field) {
472510 return organization ;
473511 case RECIPIENT :
474512 return recipient ;
513+ case LANDMARK_AFFIX :
514+ return landmarkAffix ;
515+ case LANDMARK_NAME :
516+ return landmarkName ;
475517 default :
476518 throw new IllegalArgumentException ("multi-value fields not supported: " + field );
477519 }
@@ -713,6 +755,25 @@ public Builder setRecipient(String recipient) {
713755 return set (AddressField .RECIPIENT , recipient );
714756 }
715757
758+ /**
759+ * Sets or clears the landmark affix of the address; see {@link
760+ * AddressData.Landmark#getPrefix()}.
761+ *
762+ * @param landmarkAffix the landmark affix, or null to clear an existing value.
763+ */
764+ public Builder setLandmarkAffix (String landmarkAffix ) {
765+ return set (AddressField .LANDMARK_AFFIX , landmarkAffix );
766+ }
767+
768+ /**
769+ * Sets or clears the landmark name of the address; see {@link AddressData.Landmark#getName()}.
770+ *
771+ * @param landmarkName the landmark name, or null to clear an existing value.
772+ */
773+ public Builder setLandmarkName (String landmarkName ) {
774+ return set (AddressField .LANDMARK_NAME , landmarkName );
775+ }
776+
716777 /**
717778 * Sets an address field with the specified value. If the value is empty (null or whitespace),
718779 * the original value associated with the field will be removed.
0 commit comments