Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
82430b47
Commit
82430b47
authored
Oct 20, 2015
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #4202 from eddumelendez/gh-4201
* pr/4202: Polish contribution Add spring.jersey.path property
parents
d554aa34
bc0eb996
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
138 additions
and
7 deletions
+138
-7
JerseyAutoConfiguration.java
...rk/boot/autoconfigure/jersey/JerseyAutoConfiguration.java
+18
-7
JerseyProperties.java
...framework/boot/autoconfigure/jersey/JerseyProperties.java
+15
-0
JerseyAutoConfigurationWithoutApplicationPathTests.java
...y/JerseyAutoConfigurationWithoutApplicationPathTests.java
+104
-0
appendix-application-properties.adoc
...cs/src/main/asciidoc/appendix-application-properties.adoc
+1
-0
No files found.
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jersey/JerseyAutoConfiguration.java
View file @
82430b47
...
...
@@ -48,6 +48,7 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.annotation.AnnotationUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.WebApplicationInitializer
;
import
org.springframework.web.filter.RequestContextFilter
;
...
...
@@ -56,6 +57,7 @@ import org.springframework.web.filter.RequestContextFilter;
*
* @author Dave Syer
* @author Andy Wilkinson
* @author Eddú Meléndez
*/
@Configuration
@ConditionalOnClass
(
name
=
{
"org.glassfish.jersey.server.spring.SpringComponentProvider"
,
...
...
@@ -77,8 +79,13 @@ public class JerseyAutoConfiguration implements WebApplicationInitializer {
@PostConstruct
public
void
path
()
{
this
.
path
=
findPath
(
AnnotationUtils
.
findAnnotation
(
this
.
config
.
getClass
(),
ApplicationPath
.
class
));
if
(
StringUtils
.
hasLength
(
this
.
jersey
.
getApplicationPath
()))
{
this
.
path
=
parseApplicationPath
(
this
.
jersey
.
getApplicationPath
());
}
else
{
this
.
path
=
findApplicationPath
(
AnnotationUtils
.
findAnnotation
(
this
.
config
.
getClass
(),
ApplicationPath
.
class
));
}
}
@Bean
...
...
@@ -138,15 +145,19 @@ public class JerseyAutoConfiguration implements WebApplicationInitializer {
servletContext
.
setInitParameter
(
"contextConfigLocation"
,
"<NONE>"
);
}
private
static
String
findPath
(
ApplicationPath
annotation
)
{
private
static
String
find
Application
Path
(
ApplicationPath
annotation
)
{
// Jersey doesn't like to be the default servlet, so map to /* as a fallback
if
(
annotation
==
null
)
{
return
"/*"
;
}
String
path
=
annotation
.
value
();
if
(!
path
.
startsWith
(
"/"
))
{
path
=
"/"
+
path
;
return
parseApplicationPath
(
annotation
.
value
());
}
private
static
String
parseApplicationPath
(
String
applicationPath
)
{
if
(!
applicationPath
.
startsWith
(
"/"
))
{
applicationPath
=
"/"
+
applicationPath
;
}
return
path
.
equals
(
"/"
)
?
"/*"
:
p
ath
+
"/*"
;
return
applicationPath
.
equals
(
"/"
)
?
"/*"
:
applicationP
ath
+
"/*"
;
}
}
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jersey/JerseyProperties.java
View file @
82430b47
...
...
@@ -25,6 +25,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
* {@link ConfigurationProperties} for Jersey.
*
* @author Dave Syer
* @author Eddú Meléndez
* @since 1.2.0
*/
@ConfigurationProperties
(
"spring.jersey"
)
...
...
@@ -42,6 +43,12 @@ public class JerseyProperties {
private
Filter
filter
=
new
Filter
();
/**
* Path that serves as the base URI for the application. Overrides
* the value of "@ApplicationPath" if specified.
*/
private
String
applicationPath
;
public
Filter
getFilter
()
{
return
this
.
filter
;
}
...
...
@@ -66,6 +73,14 @@ public class JerseyProperties {
this
.
init
=
init
;
}
public
String
getApplicationPath
()
{
return
this
.
applicationPath
;
}
public
void
setApplicationPath
(
String
applicationPath
)
{
this
.
applicationPath
=
applicationPath
;
}
public
enum
Type
{
SERVLET
,
FILTER
}
...
...
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jersey/JerseyAutoConfigurationWithoutApplicationPathTests.java
0 → 100644
View file @
82430b47
/*
* Copyright 2012-2015 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
autoconfigure
.
jersey
;
import
java.lang.annotation.Documented
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.Path
;
import
org.glassfish.jersey.server.ResourceConfig
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration
;
import
org.springframework.boot.autoconfigure.jersey.JerseyAutoConfigurationCustomServletPathTests.Application
;
import
org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration
;
import
org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration
;
import
org.springframework.boot.test.IntegrationTest
;
import
org.springframework.boot.test.SpringApplicationConfiguration
;
import
org.springframework.boot.test.TestRestTemplate
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
org.springframework.test.context.web.WebAppConfiguration
;
import
org.springframework.web.client.RestTemplate
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
/**
* Tests for {@link JerseyAutoConfiguration} when using custom application path.
*
* @author Eddú Meléndez
*/
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@SpringApplicationConfiguration
(
Application
.
class
)
@IntegrationTest
({
"server.port=0"
,
"spring.jersey.application-path=/api"
})
@WebAppConfiguration
public
class
JerseyAutoConfigurationWithoutApplicationPathTests
{
@Value
(
"${local.server.port}"
)
private
int
port
;
private
RestTemplate
restTemplate
=
new
TestRestTemplate
();
@Test
public
void
contextLoads
()
{
ResponseEntity
<
String
>
entity
=
this
.
restTemplate
.
getForEntity
(
"http://localhost:"
+
this
.
port
+
"/api/hello"
,
String
.
class
);
assertEquals
(
HttpStatus
.
OK
,
entity
.
getStatusCode
());
}
@MinimalWebConfiguration
@Path
(
"/hello"
)
public
static
class
Application
extends
ResourceConfig
{
@Value
(
"${message:World}"
)
private
String
msg
;
@GET
public
String
message
()
{
return
"Hello "
+
this
.
msg
;
}
public
Application
()
{
register
(
Application
.
class
);
}
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
Application
.
class
,
args
);
}
}
@Target
(
ElementType
.
TYPE
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Documented
@Import
({
EmbeddedServletContainerAutoConfiguration
.
class
,
ServerPropertiesAutoConfiguration
.
class
,
JerseyAutoConfiguration
.
class
,
PropertyPlaceholderAutoConfiguration
.
class
})
protected
@interface
MinimalWebConfiguration
{
}
}
spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc
View file @
82430b47
...
...
@@ -282,6 +282,7 @@ content into your application; rather pick only the properties that you need.
spring.mustache.view-names= # whitelist of view names that can be resolved
# JERSEY ({sc-spring-boot-autoconfigure}}/jersey/JerseyProperties.{sc-ext}[JerseyProperties])
spring.jersey.application-path # path that serves as the base URI for the application
spring.jersey.type=servlet # servlet or filter
spring.jersey.init= # init params
spring.jersey.filter.order=
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment