Skip to content
This repository was archived by the owner on Dec 15, 2018. It is now read-only.

Commit d4de35b

Browse files
leflohchkal
authored andcommitted
Remove MvcUriBuilder and use javax.ws.rs.core.UriBuilder
1 parent a496598 commit d4de35b

File tree

11 files changed

+34
-209
lines changed

11 files changed

+34
-209
lines changed

core/src/main/java/org/mvcspec/ozark/MvcContextImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
import javax.inject.Inject;
2525
import javax.inject.Named;
2626
import javax.mvc.MvcContext;
27-
import javax.mvc.uri.MvcUriBuilder;
2827
import javax.mvc.security.Csrf;
2928
import javax.mvc.security.Encoders;
3029
import javax.servlet.ServletContext;
3130
import javax.ws.rs.core.Configuration;
31+
import javax.ws.rs.core.UriBuilder;
3232
import javax.ws.rs.core.UriInfo;
3333
import java.net.URI;
3434
import java.util.Locale;
@@ -127,7 +127,7 @@ public URI uri(String identifier, Map<String, Object> params) {
127127
}
128128

129129
@Override
130-
public MvcUriBuilder uriBuilder(String identifier) {
130+
public UriBuilder uriBuilder(String identifier) {
131131
return applicationUris.getUriBuilder(identifier);
132132
}
133133

core/src/main/java/org/mvcspec/ozark/uri/ApplicationUris.java

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818
import org.mvcspec.ozark.util.AnnotationUtils;
1919

2020
import javax.enterprise.inject.Vetoed;
21-
import javax.mvc.uri.MvcUriBuilder;
22-
import javax.mvc.uri.UriRef;
21+
import javax.mvc.UriRef;
2322
import javax.ws.rs.core.MultivaluedHashMap;
2423
import javax.ws.rs.core.MultivaluedMap;
24+
import javax.ws.rs.core.UriBuilder;
2525
import java.lang.reflect.Method;
2626
import java.net.URI;
27+
import java.util.HashMap;
2728
import java.util.List;
2829
import java.util.Map;
2930
import java.util.Objects;
@@ -53,16 +54,28 @@ public URI get(String identifier) {
5354
* @see javax.mvc.MvcContext#uri(String, Map)
5455
*/
5556
public URI get(String identifier, Map<String, Object> params) {
56-
MvcUriBuilder uriBuilder = getUriBuilder(identifier);
57-
params.forEach(uriBuilder::param);
58-
return uriBuilder.build();
57+
UriTemplate uriTemplate = getUriTemplate(identifier);
58+
UriBuilder uriBuilder = UriBuilder.fromUri(uriTemplate.path());
59+
Map<String, Object> pathParams = new HashMap<>();
60+
// Everything which is not defined as query- or matrix-param should be a path-param
61+
params.forEach((key, value) -> {
62+
if (uriTemplate.queryParams().contains(key)) {
63+
uriBuilder.queryParam(key, value);
64+
} else if (uriTemplate.matrixParams().contains(key)) {
65+
uriBuilder.matrixParam(key, value);
66+
} else {
67+
pathParams.put(key, value);
68+
}
69+
});
70+
return uriBuilder.buildFromMap(pathParams);
5971
}
6072

6173
/**
6274
* @see javax.mvc.MvcContext#uriBuilder(String)
6375
*/
64-
public MvcUriBuilder getUriBuilder(String identifier) {
65-
return new DefaultMvcUriBuilder(getUriTemplate(identifier));
76+
public UriBuilder getUriBuilder(String identifier) {
77+
UriTemplate uriTemplate = getUriTemplate(identifier);
78+
return UriBuilder.fromUri(uriTemplate.path());
6679
}
6780

6881
/**

core/src/main/java/org/mvcspec/ozark/uri/DefaultMvcUriBuilder.java

Lines changed: 0 additions & 77 deletions
This file was deleted.

core/src/test/java/org/mvcspec/ozark/uri/DefaultMvcUriBuilderTest.java

Lines changed: 0 additions & 108 deletions
This file was deleted.

core/src/test/java/org/mvcspec/ozark/uri/UriBuilderTestControllers.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@
1616
package org.mvcspec.ozark.uri;
1717

1818
import javax.mvc.Controller;
19-
import javax.mvc.uri.MvcUriBuilder;
20-
import javax.mvc.uri.UriRef;
19+
import javax.mvc.UriRef;
2120
import javax.ws.rs.BeanParam;
2221
import javax.ws.rs.GET;
2322
import javax.ws.rs.MatrixParam;
@@ -27,7 +26,7 @@
2726
import javax.ws.rs.QueryParam;
2827

2928
/**
30-
* Some Controllers for {@link MvcUriBuilder related tests}
29+
* Some Controllers for {@link javax.mvc.MvcContext#uriBuilder(String)} related tests}
3130
*
3231
* @author Florian Hirsch
3332
*/

test/uri-builder/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
</parent>
2828
<artifactId>uri-builder</artifactId>
2929
<packaging>war</packaging>
30-
<name>Ozark MvcUriBuilder Test</name>
30+
<name>Ozark UriBuilder Test</name>
3131
<build>
3232
<finalName>${project.artifactId}</finalName>
3333
</build>

test/uri-builder/src/main/java/org/mvcspec/ozark/test/uribuilder/ParameterController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package org.mvcspec.ozark.test.uribuilder;
1717

1818
import javax.mvc.Controller;
19-
import javax.mvc.uri.UriRef;
19+
import javax.mvc.UriRef;
2020
import javax.ws.rs.BeanParam;
2121
import javax.ws.rs.GET;
2222
import javax.ws.rs.MatrixParam;

test/uri-builder/src/main/java/org/mvcspec/ozark/test/uribuilder/UriBuilderController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package org.mvcspec.ozark.test.uribuilder;
1717

1818
import javax.mvc.Controller;
19-
import javax.mvc.uri.UriRef;
19+
import javax.mvc.UriRef;
2020
import javax.ws.rs.GET;
2121
import javax.ws.rs.Path;
2222

test/uri-builder/src/main/webapp/WEB-INF/views/uri-builder.jsp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@
33
<html lang="en">
44
<head>
55
<meta charset="utf-8">
6-
<title>MvcUriBuilder examples</title>
6+
<title>UriBuilder examples</title>
77
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/ozark.css"/>
88
</head>
99
<body>
1010
<div class="container">
1111

12-
<h1>MvcUriBuilder</h1>
12+
<h1>UriBuilder</h1>
1313

1414
<p>
1515
Hardcoding URIs in a template can be awkward.
16-
The MVC specification provides the
17-
<a href="https://github.com/mvc-spec/mvc-spec/blob/master/api/src/main/java/javax/mvc/MvcUriBuilder.java">MvcUriBuilder</a>
18-
to generate URIs from <code>@Path</code>,
16+
The MVC specification provides methods to generate URIs from <code>@Path</code>,
1917
<code>@PathParam</code>, <code>@QueryParam</code> and <code>@MatrixParam</code> annotations.
2018
It can be used from a template but also from Java code.
2119
</p>
@@ -57,7 +55,7 @@ public class UriBuilderController {
5755
</p>
5856

5957
<p>
60-
But you don't have to use <code>UriRef</code> to use the <code>MvcUriBuilder</code>.
58+
But you don't have to use <code>UriRef</code> annotation.
6159
You can also reference a controller method with the simple class name of your
6260
controller and the method name seperated by a '#':
6361
</p>

test/uri-builder/src/main/webapp/index.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<!DOCTYPE html>
22
<html>
33
<head>
4-
<title>MvcUriBuilder test</title>
4+
<title>UriBuilder test</title>
55
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
66
<link rel="stylesheet" type="text/css" href="ozark.css">
77
</head>
88
<body>
9-
<h1>MvcUriBuilder test</h1>
9+
<h1>UriBuilder test</h1>
1010
<ul>
1111
<li><a href="resources/uri-builder">resources/uri-builder</a>
1212
</ul>

0 commit comments

Comments
 (0)