package com.google.sitebricks.http;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Multimap;
import java.util.Collection;
/**
* @author dhanji@gmail.com (Dhanji R. Prasanna)
*/
public class Parameters {
public static Multimap<String, String> readMatrix(String uri) {
// Do the matrix parameters now.
ImmutableMultimap.Builder<String, String> builder = ImmutableMultimap.builder();
String[] pieces = uri.split("[/]+");
for (String piece : pieces) {
String[] pairs = piece.split("[;]+");
for (String pair : pairs) {
String[] singlePair = pair.split("[=]+");
if (singlePair.length > 1) {
builder.put(singlePair[0], singlePair[1]);
}
}
}
return builder.build();
}
public static String singleMatrixParam(String name, Collection<String> values) {
if (values.size() > 1) {
throw new IllegalStateException("This matrix parameter has multiple values, "
+ name + "=" + values);
}
return values.isEmpty() ? null : Iterables.getOnlyElement(values);
}
}