Make HierarchicalUriComponents Serializable

Issue: SPR-10266
master
Phillip Webb 12 years ago
parent 6fc0790c5f
commit 536325bc75
  1. 3
      spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java
  2. 17
      spring-web/src/test/java/org/springframework/web/util/UriComponentsTests.java

@ -17,6 +17,7 @@
package org.springframework.web.util;
import java.io.ByteArrayOutputStream;
import java.io.Serializable;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import java.net.URISyntaxException;
@ -615,7 +616,7 @@ final class HierarchicalUriComponents extends UriComponents {
/**
* Defines the contract for path (segments).
*/
interface PathComponent {
interface PathComponent extends Serializable {
String getPath();

@ -16,11 +16,16 @@
package org.springframework.web.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.URI;
import java.net.URISyntaxException;
import org.junit.Test;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.*;
/** @author Arjen Poutsma */
@ -75,4 +80,16 @@ public class UriComponentsTests {
assertEquals("http://example.com/bar", uriComponents.normalize().toString());
}
@Test
public void serializable() throws Exception {
UriComponents uriComponents = UriComponentsBuilder.fromUriString(
"http://example.com").path("/{foo}").query("bar={baz}").build();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(uriComponents);
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()));
UriComponents readObject = (UriComponents) ois.readObject();
assertThat(uriComponents.toString(), equalTo(readObject.toString()));
}
}

Loading…
Cancel
Save