Skip to content

Commit 5cb04da

Browse files
author
Grégoire Juge
committed
Merge remote-tracking branch 'upstream/master'
2 parents d38b274 + 81c2f9f commit 5cb04da

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

modules/org.restlet.ext.oauth/src/org/restlet/ext/oauth/OAuthParameters.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.logging.Logger;
3030

3131
import org.restlet.data.Form;
32+
import org.restlet.data.Parameter;
3233
import org.restlet.data.Reference;
3334
import org.restlet.ext.oauth.internal.Scopes;
3435
import org.restlet.representation.Representation;
@@ -118,6 +119,17 @@ public Reference toReference(String uri) {
118119
reference.setQuery(query);
119120
return reference;
120121
}
122+
123+
public Reference toReference(Reference ref) {
124+
Reference reference = new Reference(ref);
125+
126+
//Add each parameter to avoid overwriting existing parameters
127+
for(Parameter param : form){
128+
reference.addQueryParameter(param);
129+
}
130+
131+
return reference;
132+
}
121133

122134
public Representation toRepresentation() {
123135
return form.getWebRepresentation();

modules/org.restlet.ext.servlet/src/org/restlet/ext/servlet/internal/ServletServerAdapter.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,10 @@ public HttpRequest toRequest(ServerCall httpCall) {
8585
for (final Enumeration<String> namesEnum = servletCall.getRequest()
8686
.getAttributeNames(); namesEnum.hasMoreElements();) {
8787
attributeName = namesEnum.nextElement();
88-
result.getAttributes().put(attributeName,
89-
servletCall.getRequest().getAttribute(attributeName));
88+
Object attribute = servletCall.getRequest().getAttribute(attributeName);
89+
if (attribute != null) {
90+
result.getAttributes().put(attributeName, attribute);
91+
}
9092
}
9193
}
9294

modules/org.restlet.test/src/org/restlet/test/ext/oauth/OAuthParametersTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,16 @@ public void testToReference() {
6464
assertEquals("val2", form.getFirstValue("bar"));
6565
assertEquals("val3", form.getFirstValue("buz"));
6666
}
67+
68+
@Test
69+
public void testToReferenceFromReference() {
70+
Reference originalReference = new Reference("http://localhost/test?existing=thing");
71+
72+
Reference reference = parameters.toReference(originalReference);
73+
Form form = reference.getQueryAsForm();
74+
assertEquals("thing", form.getFirstValue("existing"));
75+
assertEquals("val1", form.getFirstValue("foo"));
76+
assertEquals("val2", form.getFirstValue("bar"));
77+
assertEquals("val3", form.getFirstValue("buz"));
78+
}
6779
}

0 commit comments

Comments
 (0)