@@ -753,7 +753,7 @@ public void parsesEmptyUri() {
753
753
}
754
754
755
755
@ Test
756
- public void testClone () {
756
+ public void testCloneAndMerge () {
757
757
UriComponentsBuilder builder1 = UriComponentsBuilder .newInstance ();
758
758
builder1 .scheme ("http" ).host ("e1.com" ).path ("/p1" ).pathSegment ("ps1" ).queryParam ("q1" ).fragment ("f1" ).encode ();
759
759
@@ -775,6 +775,37 @@ public void testClone() {
775
775
assertEquals ("f2" , result2 .getFragment ());
776
776
}
777
777
778
+ @ Test // gh-24772
779
+ public void testDeepClone () {
780
+ HashMap <String , Object > vars = new HashMap <>();
781
+ vars .put ("ps1" , "foo" );
782
+ vars .put ("ps2" , "bar" );
783
+
784
+ UriComponentsBuilder builder1 = UriComponentsBuilder .newInstance ();
785
+ builder1 .scheme ("http" ).host ("e1.com" ).userInfo ("user:pwd" ).path ("/p1" ).pathSegment ("{ps1}" )
786
+ .pathSegment ("{ps2}" ).queryParam ("q1" ).fragment ("f1" ).uriVariables (vars ).encode ();
787
+
788
+ UriComponentsBuilder builder2 = (UriComponentsBuilder ) builder1 .clone ();
789
+
790
+ UriComponents result1 = builder1 .build ();
791
+ assertEquals ("http" , result1 .getScheme ());
792
+ assertEquals ("user:pwd" , result1 .getUserInfo ());
793
+ assertEquals ("e1.com" , result1 .getHost ());
794
+ assertEquals ("/p1/foo/bar" , result1 .getPath ());
795
+ assertEquals ("q1" , result1 .getQuery ());
796
+ assertEquals ("f1" , result1 .getFragment ());
797
+ assertNull (result1 .getSchemeSpecificPart ());
798
+
799
+ UriComponents result2 = builder2 .build ();
800
+ assertEquals ("http" , result2 .getScheme ());
801
+ assertEquals ("user:pwd" , result2 .getUserInfo ());
802
+ assertEquals ("e1.com" , result2 .getHost ());
803
+ assertEquals ("/p1/foo/bar" , result2 .getPath ());
804
+ assertEquals ("q1" , result2 .getQuery ());
805
+ assertEquals ("f1" , result2 .getFragment ());
806
+ assertNull (result1 .getSchemeSpecificPart ());
807
+ }
808
+
778
809
@ Test // SPR-11856
779
810
public void fromHttpRequestForwardedHeader () {
780
811
MockHttpServletRequest request = new MockHttpServletRequest ();
0 commit comments