Skip to content

Instantly share code, notes, and snippets.

Created May 13, 2015 22:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/bb457425728291ae7e7c to your computer and use it in GitHub Desktop.
Save anonymous/bb457425728291ae7e7c to your computer and use it in GitHub Desktop.
Patch for JERSEY-2863
From 76d2972ed3926581f44fc3b4b8592d4dfcdd62d3 Mon Sep 17 00:00:00 2001
From: Jean-Christophe Counio <jean-christophe.counio@oracle.com>
Date: Wed, 13 May 2015 13:59:03 -0700
Subject: [PATCH] add values in path and query params in ELBuilder values
---
.../glassfish/jersey/linking/ELLinkBuilder.java | 29 +++++++++++++---------
.../jersey/linking/FieldProcessorTest.java | 9 ++++---
.../jersey/linking/HeaderProcessorTest.java | 9 ++++---
3 files changed, 27 insertions(+), 20 deletions(-)
diff --git a/incubator/declarative-linking/src/main/java/org/glassfish/jersey/linking/ELLinkBuilder.java b/incubator/declarative-linking/src/main/java/org/glassfish/jersey/linking/ELLinkBuilder.java
index 20fbe59..1861405 100644
--- a/incubator/declarative-linking/src/main/java/org/glassfish/jersey/linking/ELLinkBuilder.java
+++ b/incubator/declarative-linking/src/main/java/org/glassfish/jersey/linking/ELLinkBuilder.java
@@ -108,7 +108,7 @@ final class ELLinkBuilder {
UriBuilder ub = applyLinkStyle(template, link.getLinkStyle(), uriInfo);
UriTemplateParser parser = new UriTemplateParser(template);
List<String> parameterNames = parser.getNames();
- Map<String, Object> valueMap = getParameterValues(parameterNames, link, context);
+ Map<String, Object> valueMap = getParameterValues(parameterNames, link, context, uriInfo);
return ub.buildFromMap(valueMap);
}
@@ -131,24 +131,29 @@ final class ELLinkBuilder {
private static Map<String, Object> getParameterValues(List<String> parameterNames,
InjectLinkDescriptor linkField,
- LinkELContext context) {
+ LinkELContext context,
+ UriInfo uriInfo) {
Map<String, Object> values = new HashMap<>();
for (String name : parameterNames) {
- String elExpression = getEL(name, linkField);
+ String elExpression = linkField.getBinding(name);
+ if (elExpression == null) {
+ String value = uriInfo.getPathParameters().getFirst(name);
+ if (value == null) {
+ value = uriInfo.getQueryParameters().getFirst(name);
+ }
+ if (value != null) {
+ values.put(name, value);
+ continue;
+ }
+ elExpression = "${" + ResponseContextResolver.INSTANCE_OBJECT + "." + name + "}";
+ }
ValueExpression expr = expressionFactory.createValueExpression(context,
- elExpression, String.class);
+ elExpression, String.class);
Object value = expr.getValue(context);
values.put(name, value != null ? value.toString() : null);
- }
+ }
return values;
}
- private static String getEL(String name, InjectLinkDescriptor linkField) {
- String binding = linkField.getBinding(name);
- if (binding != null) {
- return binding;
- }
- return "${" + ResponseContextResolver.INSTANCE_OBJECT + "." + name + "}";
- }
}
diff --git a/incubator/declarative-linking/src/test/java/org/glassfish/jersey/linking/FieldProcessorTest.java b/incubator/declarative-linking/src/test/java/org/glassfish/jersey/linking/FieldProcessorTest.java
index ccc5c24..99aee77 100644
--- a/incubator/declarative-linking/src/test/java/org/glassfish/jersey/linking/FieldProcessorTest.java
+++ b/incubator/declarative-linking/src/test/java/org/glassfish/jersey/linking/FieldProcessorTest.java
@@ -60,6 +60,7 @@ import javax.ws.rs.core.PathSegment;
import javax.ws.rs.core.UriBuilder;
import javax.xml.bind.annotation.XmlTransient;
+import org.glassfish.jersey.internal.util.collection.MultivaluedStringMap;
import org.glassfish.jersey.linking.mapping.ResourceMappingContext;
import org.glassfish.jersey.server.ExtendedUriInfo;
@@ -136,22 +137,22 @@ public class FieldProcessorTest {
@Override
public MultivaluedMap<String, String> getPathParameters() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return new MultivaluedStringMap();
}
@Override
public MultivaluedMap<String, String> getPathParameters(boolean decode) {
- throw new UnsupportedOperationException("Not supported yet.");
+ return new MultivaluedStringMap();
}
@Override
public MultivaluedMap<String, String> getQueryParameters() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return new MultivaluedStringMap();
}
@Override
public MultivaluedMap<String, String> getQueryParameters(boolean decode) {
- throw new UnsupportedOperationException("Not supported yet.");
+ return new MultivaluedStringMap();
}
@Override
diff --git a/incubator/declarative-linking/src/test/java/org/glassfish/jersey/linking/HeaderProcessorTest.java b/incubator/declarative-linking/src/test/java/org/glassfish/jersey/linking/HeaderProcessorTest.java
index e117b17..1f38dd7 100644
--- a/incubator/declarative-linking/src/test/java/org/glassfish/jersey/linking/HeaderProcessorTest.java
+++ b/incubator/declarative-linking/src/test/java/org/glassfish/jersey/linking/HeaderProcessorTest.java
@@ -48,6 +48,7 @@ import java.util.regex.MatchResult;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.PathSegment;
import javax.ws.rs.core.UriBuilder;
+import org.glassfish.jersey.internal.util.collection.MultivaluedStringMap;
import org.glassfish.jersey.linking.InjectLink.Extension;
import org.glassfish.jersey.linking.mapping.ResourceMappingContext;
@@ -114,19 +115,19 @@ public class HeaderProcessorTest {
}
public MultivaluedMap<String, String> getPathParameters() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return new MultivaluedStringMap();
}
public MultivaluedMap<String, String> getPathParameters(boolean decode) {
- throw new UnsupportedOperationException("Not supported yet.");
+ return new MultivaluedStringMap();
}
public MultivaluedMap<String, String> getQueryParameters() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return new MultivaluedStringMap();
}
public MultivaluedMap<String, String> getQueryParameters(boolean decode) {
- throw new UnsupportedOperationException("Not supported yet.");
+ return new MultivaluedStringMap();
}
public List<String> getMatchedURIs() {
--
1.9.3 (Apple Git-50)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment