@@ -738,7 +738,7 @@ public void parsesEmptyUri() {
738
738
}
739
739
740
740
@ Test
741
- public void testClone () {
741
+ public void testCloneAndMerge () {
742
742
UriComponentsBuilder builder1 = UriComponentsBuilder .newInstance ();
743
743
builder1 .scheme ("http" ).host ("e1.com" ).path ("/p1" ).pathSegment ("ps1" ).queryParam ("q1" ).fragment ("f1" ).encode ();
744
744
@@ -760,6 +760,37 @@ public void testClone() {
760
760
assertEquals ("f2" , result2 .getFragment ());
761
761
}
762
762
763
+ @ Test // gh-24772
764
+ public void testDeepClone () {
765
+ HashMap <String , Object > vars = new HashMap <>();
766
+ vars .put ("ps1" , "foo" );
767
+ vars .put ("ps2" , "bar" );
768
+
769
+ UriComponentsBuilder builder1 = UriComponentsBuilder .newInstance ();
770
+ builder1 .scheme ("http" ).host ("e1.com" ).userInfo ("user:pwd" ).path ("/p1" ).pathSegment ("{ps1}" )
771
+ .pathSegment ("{ps2}" ).queryParam ("q1" ).fragment ("f1" ).uriVariables (vars ).encode ();
772
+
773
+ UriComponentsBuilder builder2 = (UriComponentsBuilder ) builder1 .clone ();
774
+
775
+ UriComponents result1 = builder1 .build ();
776
+ assertEquals ("http" , result1 .getScheme ());
777
+ assertEquals ("user:pwd" , result1 .getUserInfo ());
778
+ assertEquals ("e1.com" , result1 .getHost ());
779
+ assertEquals ("/p1/foo/bar" , result1 .getPath ());
780
+ assertEquals ("q1" , result1 .getQuery ());
781
+ assertEquals ("f1" , result1 .getFragment ());
782
+ assertNull (result1 .getSchemeSpecificPart ());
783
+
784
+ UriComponents result2 = builder2 .build ();
785
+ assertEquals ("http" , result2 .getScheme ());
786
+ assertEquals ("user:pwd" , result2 .getUserInfo ());
787
+ assertEquals ("e1.com" , result2 .getHost ());
788
+ assertEquals ("/p1/foo/bar" , result2 .getPath ());
789
+ assertEquals ("q1" , result2 .getQuery ());
790
+ assertEquals ("f1" , result2 .getFragment ());
791
+ assertNull (result1 .getSchemeSpecificPart ());
792
+ }
793
+
763
794
@ Test // SPR-11856
764
795
public void fromHttpRequestForwardedHeader () {
765
796
MockHttpServletRequest request = new MockHttpServletRequest ();
0 commit comments