mirror of
https://github.com/google/nomulus
synced 2026-01-03 03:35:42 +00:00
Use pipe as extension URI separator (#2737)
It turns out period can be used in the URI, such as in "urn:ietf:params:xml:ns:fee-0.12". I don't think pipe is used, at least not according to EPP URI namespace naming convention. Ideally we'd use serialization, but using the default serialization runs the risk of it being platform/JDK dependent, so a new deployment might not be able to deserialize existing cookies. A custom serializer that guarantees stability would have been needed.
This commit is contained in:
@@ -103,7 +103,7 @@ public class CookieSessionMetadata extends SessionMetadata {
|
|||||||
@Override
|
@Override
|
||||||
public Set<String> getServiceExtensionUris() {
|
public Set<String> getServiceExtensionUris() {
|
||||||
return Optional.ofNullable(data.getOrDefault(SERVICE_EXTENSIONS, null))
|
return Optional.ofNullable(data.getOrDefault(SERVICE_EXTENSIONS, null))
|
||||||
.map(s -> Splitter.on('.').splitToList(s))
|
.map(s -> Splitter.on(URI_SEPARATOR).splitToList(s))
|
||||||
.map(ImmutableSet::copyOf)
|
.map(ImmutableSet::copyOf)
|
||||||
.orElse(ImmutableSet.of());
|
.orElse(ImmutableSet.of());
|
||||||
}
|
}
|
||||||
@@ -125,7 +125,7 @@ public class CookieSessionMetadata extends SessionMetadata {
|
|||||||
if (serviceExtensionUris == null || serviceExtensionUris.isEmpty()) {
|
if (serviceExtensionUris == null || serviceExtensionUris.isEmpty()) {
|
||||||
data.remove(SERVICE_EXTENSIONS);
|
data.remove(SERVICE_EXTENSIONS);
|
||||||
} else {
|
} else {
|
||||||
data.put(SERVICE_EXTENSIONS, Joiner.on('.').join(serviceExtensionUris));
|
data.put(SERVICE_EXTENSIONS, Joiner.on(URI_SEPARATOR).join(serviceExtensionUris));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ import java.util.Set;
|
|||||||
/** Object to allow setting and retrieving session information in flows. */
|
/** Object to allow setting and retrieving session information in flows. */
|
||||||
public abstract class SessionMetadata {
|
public abstract class SessionMetadata {
|
||||||
|
|
||||||
|
protected static final char URI_SEPARATOR = '|';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Invalidates the session. A new instance must be created after this for future sessions.
|
* Invalidates the session. A new instance must be created after this for future sessions.
|
||||||
* Attempts to invoke methods of this class after this method has been called will throw {@code
|
* Attempts to invoke methods of this class after this method has been called will throw {@code
|
||||||
@@ -50,7 +52,9 @@ public abstract class SessionMetadata {
|
|||||||
return toStringHelper(getClass())
|
return toStringHelper(getClass())
|
||||||
.add("clientId", getRegistrarId())
|
.add("clientId", getRegistrarId())
|
||||||
.add("failedLoginAttempts", getFailedLoginAttempts())
|
.add("failedLoginAttempts", getFailedLoginAttempts())
|
||||||
.add("serviceExtensionUris", Joiner.on('.').join(nullToEmpty(getServiceExtensionUris())))
|
.add(
|
||||||
|
"serviceExtensionUris",
|
||||||
|
Joiner.on(URI_SEPARATOR).join(nullToEmpty(getServiceExtensionUris())))
|
||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class CookieSessionMetadataTest {
|
|||||||
"THIS_COOKIE=foo; SESSION_INFO="
|
"THIS_COOKIE=foo; SESSION_INFO="
|
||||||
+ encode(
|
+ encode(
|
||||||
"CookieSessionMetadata{clientId=test_registrar, failedLoginAttempts=5, "
|
"CookieSessionMetadata{clientId=test_registrar, failedLoginAttempts=5, "
|
||||||
+ " serviceExtensionUris=A.B.C}")
|
+ " serviceExtensionUris=A|B|C}")
|
||||||
+ "; THAT_COOKIE=bar");
|
+ "; THAT_COOKIE=bar");
|
||||||
cookieSessionMetadata = new CookieSessionMetadata(request);
|
cookieSessionMetadata = new CookieSessionMetadata(request);
|
||||||
assertThat(cookieSessionMetadata.getRegistrarId()).isEqualTo("test_registrar");
|
assertThat(cookieSessionMetadata.getRegistrarId()).isEqualTo("test_registrar");
|
||||||
@@ -62,7 +62,7 @@ public class CookieSessionMetadataTest {
|
|||||||
"SESSION_INFO="
|
"SESSION_INFO="
|
||||||
+ encode(
|
+ encode(
|
||||||
"CookieSessionMetadata{clientId=null, failedLoginAttempts=5, "
|
"CookieSessionMetadata{clientId=null, failedLoginAttempts=5, "
|
||||||
+ " serviceExtensionUris=A.B.C}"));
|
+ " serviceExtensionUris=A|B|C}"));
|
||||||
cookieSessionMetadata = new CookieSessionMetadata(request);
|
cookieSessionMetadata = new CookieSessionMetadata(request);
|
||||||
assertThat(cookieSessionMetadata.getRegistrarId()).isNull();
|
assertThat(cookieSessionMetadata.getRegistrarId()).isNull();
|
||||||
assertThat(cookieSessionMetadata.getFailedLoginAttempts()).isEqualTo(5);
|
assertThat(cookieSessionMetadata.getFailedLoginAttempts()).isEqualTo(5);
|
||||||
@@ -151,10 +151,11 @@ public class CookieSessionMetadataTest {
|
|||||||
"CookieSessionMetadata{clientId=test_registrar, failedLoginAttempts=5, "
|
"CookieSessionMetadata{clientId=test_registrar, failedLoginAttempts=5, "
|
||||||
+ " serviceExtensionUris=Foo}"));
|
+ " serviceExtensionUris=Foo}"));
|
||||||
cookieSessionMetadata = new CookieSessionMetadata(request);
|
cookieSessionMetadata = new CookieSessionMetadata(request);
|
||||||
cookieSessionMetadata.setServiceExtensionUris(ImmutableSet.of("Bar", "Baz"));
|
cookieSessionMetadata.setServiceExtensionUris(ImmutableSet.of("Bar", "Baz", "foo:bar:baz-1.3"));
|
||||||
assertThat(cookieSessionMetadata.getRegistrarId()).isEqualTo("test_registrar");
|
assertThat(cookieSessionMetadata.getRegistrarId()).isEqualTo("test_registrar");
|
||||||
assertThat(cookieSessionMetadata.getFailedLoginAttempts()).isEqualTo(5);
|
assertThat(cookieSessionMetadata.getFailedLoginAttempts()).isEqualTo(5);
|
||||||
assertThat(cookieSessionMetadata.getServiceExtensionUris()).containsExactly("Bar", "Baz");
|
assertThat(cookieSessionMetadata.getServiceExtensionUris())
|
||||||
|
.containsExactly("Bar", "Baz", "foo:bar:baz-1.3");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -206,6 +207,6 @@ public class CookieSessionMetadataTest {
|
|||||||
assertThat(value)
|
assertThat(value)
|
||||||
.isEqualTo(
|
.isEqualTo(
|
||||||
"CookieSessionMetadata{clientId=new_registrar, failedLoginAttempts=1,"
|
"CookieSessionMetadata{clientId=new_registrar, failedLoginAttempts=1,"
|
||||||
+ " serviceExtensionUris=Bar.Baz}");
|
+ " serviceExtensionUris=Bar|Baz}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user