Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Immutable HttpFields and MetaData #4777

Merged
merged 45 commits into from
Apr 28, 2020
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
e37a34c
Immutable version of HttpFields
gregw Apr 15, 2020
75df043
Immutable version of HttpFields
gregw Apr 15, 2020
753e02c
Immutable version of HttpFields
gregw Apr 15, 2020
53bf5a5
Immutable version of HttpFields
gregw Apr 15, 2020
d9837d9
Immutable MetaData
gregw Apr 16, 2020
f2f08e5
Immutable MetaData
gregw Apr 16, 2020
8d5b036
Immutable MetaData
gregw Apr 17, 2020
8de4fb6
Immutable MetaData
gregw Apr 17, 2020
c1010f3
Immutable MetaData
gregw Apr 17, 2020
1bb6ba4
Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-…
gregw Apr 18, 2020
c0b98a3
Immutable MetaData
gregw Apr 18, 2020
4c334e8
Immutable MetaData
gregw Apr 18, 2020
23bcdd2
Immutable MetaData
gregw Apr 19, 2020
a953f42
Immutable MetaData WIP
gregw Apr 19, 2020
fb81db1
Immutable MetaData WIP
gregw Apr 20, 2020
372455a
Immutable MetaData WIP
gregw Apr 20, 2020
58e458c
Immutable MetaData WIP
gregw Apr 20, 2020
0215268
Immutable MetaData WIP
gregw Apr 20, 2020
90aae8b
Merge branch 'jetty-10.0.x' into jetty-10.0.x-ImmutableMetaData
gregw Apr 20, 2020
c23ea62
Immutable MetaData WIP
gregw Apr 20, 2020
cf6df85
Immutable MetaData WIP
gregw Apr 20, 2020
e8617da
Immutable MetaData WIP
gregw Apr 20, 2020
a2d05a1
Immutable MetaData WIP
gregw Apr 20, 2020
f6387a0
Immutable MetaData WIP
gregw Apr 21, 2020
d1b62c7
Immutable MetaData WIP
gregw Apr 21, 2020
79c453b
Immutable MetaData WIP
gregw Apr 21, 2020
8943b9b
Immutable MetaData WIP
gregw Apr 21, 2020
89aa969
Immutable MetaData WIP
gregw Apr 21, 2020
0ac9421
Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-…
gregw Apr 22, 2020
915f324
Immutable MetaData WIP
gregw Apr 22, 2020
3de51af
Immutable MetaData WIP
gregw Apr 22, 2020
dd154dd
Immutable Metadata
gregw Apr 22, 2020
3c5e8b6
Merge branch 'jetty-10.0.x' into jetty-10.0.x-ImmutableMetaData
gregw Apr 22, 2020
3749a5c
Immutable MetaData WIP
gregw Apr 22, 2020
5971476
Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-…
gregw Apr 23, 2020
fa86645
Immutable MetaData WIP
gregw Apr 23, 2020
c71cb54
Immutable MetaData WIP
gregw Apr 23, 2020
1fe4169
Immutable MetaData WIP
gregw Apr 23, 2020
9e9274f
Immutable MetaData WIP
gregw Apr 24, 2020
1abe2c7
Immutable MetaData
gregw Apr 24, 2020
ad82672
Immutable MetaData
gregw Apr 24, 2020
ec9224d
Immutable MetaData
gregw Apr 24, 2020
5817a1a
private
gregw Apr 27, 2020
ac3cb3c
Merge remote-tracking branch 'origin/jetty-10.0.x' into jetty-10.0.x-…
gregw Apr 27, 2020
79bb9f7
Merge branch 'jetty-10.0.x' into jetty-10.0.x-ImmutableMetaData
gregw Apr 28, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 47 additions & 3 deletions jetty-http/src/main/java/org/eclipse/jetty/http/HttpField.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,11 @@

package org.eclipse.jetty.http;

import java.util.Map;
import java.util.Objects;
import java.util.StringTokenizer;

import org.eclipse.jetty.util.QuotedStringTokenizer;
import org.eclipse.jetty.util.StringUtil;

/**
Expand Down Expand Up @@ -289,9 +292,7 @@ public boolean isSameName(HttpField field)
return true;
if (_header != null && _header == field.getHeader())
return true;
if (_name.equalsIgnoreCase(field.getName()))
return true;
return false;
return _name.equalsIgnoreCase(field.getName());
}

private int nameHashCode()
Expand Down Expand Up @@ -413,4 +414,47 @@ public long getLongValue()
return _long;
}
}

/**
* Get field value parameters. Some field values can have parameters. This method separates the
* value from the parameters and optionally populates a map with the parameters. For example:
*
* <PRE>
*
* FieldName : Value ; param1=val1 ; param2=val2
*
* </PRE>
*
* @param value The Field value, possibly with parameters.
* @param parameters A map to populate with the parameters, or null
* @return The value.
*/
public static String getValueParameters(String value, Map<String, String> parameters)
{
if (value == null)
return null;

int i = value.indexOf(';');
if (i < 0)
return value;
if (parameters == null)
return value.substring(0, i).trim();

StringTokenizer tok1 = new QuotedStringTokenizer(value.substring(i), ";", false, true);
while (tok1.hasMoreTokens())
{
String token = tok1.nextToken();
StringTokenizer tok2 = new QuotedStringTokenizer(token, "= ");
if (tok2.hasMoreTokens())
{
String paramName = tok2.nextToken();
String paramVal = null;
if (tok2.hasMoreTokens())
paramVal = tok2.nextToken();
parameters.put(paramName, paramVal);
}
}

return value.substring(0, i).trim();
}
}
Loading