28package com.jogamp.common.net;
30import java.net.URISyntaxException;
31import java.util.HashMap;
32import java.util.Iterator;
34import java.util.Map.Entry;
52 private static final String QMARK =
"?";
53 private static final char ASSIG =
'=';
54 private static final String EMPTY =
"";
55 private final String query_separator;
57 private final HashMap<String, String> properties =
new HashMap<String, String>();
60 query_separator = String.valueOf(querySeparator);
67 boolean needsSep =
false;
68 final StringBuilder sb =
new StringBuilder();
69 if (
null != baseQuery ) {
70 if( baseQuery.startsWith(QMARK) ) {
71 baseQuery = baseQuery.substring(1);
73 sb.append(baseQuery.get());
74 if( !baseQuery.endsWith(query_separator) ) {
78 final Iterator<Entry<String, String>> entries = properties.entrySet().iterator();
79 while(entries.hasNext()) {
81 sb.append(query_separator);
83 final Entry<String, String> entry = entries.next();
84 sb.append(entry.getKey());
85 if( EMPTY != entry.getValue() ) {
86 sb.append(ASSIG).append(entry.getValue());
105 if(
';' != querySeparator &&
'&' != querySeparator ) {
106 throw new IllegalArgumentException(
"querySeparator is invalid: "+querySeparator);
110 final int q_l =
null != q ? q.length() : -1;
113 final int q_b = q_e + 1;
114 q_e = q.indexOf(querySeparator, q_b);
124 final String part = q.substring(q_b, q_e);
125 final int assignment = part.indexOf(ASSIG);
128 final String k = part.substring(0, assignment);
129 final String v = part.substring(assignment+1);
130 data.properties.put(k, v);
133 data.properties.put(part, EMPTY);
Helper class to process URI's query, handled as properties.
final Uri.Encoded appendQuery(Uri.Encoded baseQuery)
final Uri appendQuery(final Uri base)
final char getQuerySeparator()
static final UriQueryProps create(final Uri uri, final char querySeparator)
final Map< String, String > getProperties()
Immutable RFC3986 encoded string.
This class implements an immutable Uri as defined by RFC 2396.
final Uri getNewQuery(final Encoded newQuery)
Returns a new Uri instance w/ the given new query newQuery.
static String decode(final Encoded encoded)
Safe Encoded#decode() call on optional encoded instance.
static final String QUERY_LEGAL
Valid charset for RFC 2396 query, additional to legal alphanum characters.