Commit Graph

31 Commits

Author SHA1 Message Date
Stephane Nicoll
31f8aeaf8f Add rule to prevent imports on Guava
This commit makes sure that we don't import a class from the Guava
library by mistake as it provides various utility classes with similar
names as our own.

Closes gh-10089
2017-08-28 10:31:20 +02:00
Andy Wilkinson
9687a5041e Add support for making endpoints accessible via HTTP
This commit adds support for exposing endpoint operations over HTTP.
Jersey, Spring MVC, and WebFlux are all supported but the programming
model remains web framework agnostic. When using WebFlux, blocking
operations are automatically performed on a separate thread using
Reactor's scheduler support. Support for web-specific extensions is
provided via a new `@WebEndpointExtension` annotation.

Closes gh-7970
Closes gh-9946
Closes gh-9947
2017-08-03 18:44:11 +01:00
Andy Wilkinson
2ae39fce8a Restrict imports in o.s.b.autoconfigure.web
Closes gh-8682
2017-07-24 19:54:28 +01:00
Phillip Webb
1ad318d8a6 Refine Mustache support
Refine Mustache support to provide a cleaner separation between the
reactive and servlet implementations. The views have now moved to the
`spring-boot` project and the auto-configuration has been split into
two distinct `@Imports` to save needing full package declarations.

See gh-8941
2017-04-25 10:07:22 -07:00
Phillip Webb
33e54ed723 Relocate org.springframework.boot.web.support
Move `org.springframework.boot.web.support` under the `servlet` package.

Fixes gh-8557
2017-03-14 22:03:03 -07:00
Phillip Webb
69b72874ea Extract logging listeners
Separate logging ApplicationListeners classes to a different package
so that the root `logging` package is no longer aware of `context`
concerns.

Fixes gh-8611
2017-03-14 13:45:53 -07:00
Andy Wilkinson
703d403f7d Tweak file property of import control config to work on Windows 2017-03-13 16:22:23 +00:00
Phillip Webb
b0eb5ef71b Fix checkstyle import control
Use fully expanded referenced in an attempt to make the CI happy.

Fixes gh-8532
2017-03-12 22:27:49 -07:00
Phillip Webb
67556ba8ea Restructure embedded web server packages
Rework `org.springframework.boot.context.embedded` to relocate classes
to `org.springframework.boot.web`. Packages are now organized around
the following areas:

Packages for shared concerns, for example the `WebServer` interface
to start/stop a server and the common configuration elements:
- org.springframework.boot.web.context
- org.springframework.boot.web.server

Servlet specific packages:
- org.springframework.boot.web.servlet.server
- org.springframework.boot.web.servlet.context
- org.springframework.boot.web.servlet.filter

Reactive specific packages:
- org.springframework.boot.web.reactive.context
- org.springframework.boot.web.reactive.server

Embedded server implementations (both reactive and servlet):
- org.springframework.boot.web.embedded

In addition:

- Rename `EmbeddedServletContainerFactory` to `ServletWebServerFactory`
  to align with the `ReactiveWebServerFactory`.
- Rename `EmbeddedWebApplicationContext` to
  `ServletWebServerApplicationContext` and
- Rename `EmbeddedReactiveWebApplicationContext` to
  `ReactiveWebServerApplicationContext`.
- Add checkstyle rules to restrict imports.
- Fixup all affected code to use the correct imports and local names.

Fixes gh-8532
2017-03-12 21:08:25 -07:00
Andy Wilkinson
3c35066ed5 Merge branch '1.5.x' 2017-01-13 15:40:53 -05:00
Andy Wilkinson
1afb050061 Correct copyright dates and enforce that starting year is 2012
Closes gh-7923
2017-01-13 15:36:06 -05:00
Stephane Nicoll
c28ff4314c Upgrade to Mockito 2
Closes gh-7770
2017-01-05 12:22:15 +01:00
Andy Wilkinson
918e122ddc Fix remote DevTools' support for adding and removing classes
Previously, remote DevTools only correctly supported modifying
existing classes. New classes that were added would be missed, and
deleted classes could cause a failure as they would be found by
component scanning but hidden by RestartClassLoader.

This commit introduces a DevTools-specific ResourcePatternResolver
that is installed as the application context's resource loader. This
custom resolver is aware of the files that have been added and
deleted and modifies the result returned from getResource and
getResources accordingly.

New intergration tests have been introduced to verify DevTools'
behaviour. The tests cover four scenarios:

- Adding a new controller
- Removing an existing controller
- Adding a request mapping to a controller
- Removing a request mapping from a controller

These four scenarios are tested with:

- DevTools updating a local application
- DevTools updating a remote application packaged in a jar file
- DevTools updating a remote application that's been exploded

Closes gh-7379
2016-11-17 19:19:54 +00:00
Stephane Nicoll
00a10bcf61 Restore checkstyle
Rather than disabling checkstyle altogether, this commit enables it
again, relaxing the javadoc requirement only.

See gh-7142
2016-10-12 10:37:15 +02:00
Phillip Webb
56544c8dd5 Polish 2016-09-09 10:27:44 -07:00
Johnny Lim
37c8c3669b Polish
Closes gh-6671
2016-08-17 10:49:04 +02:00
Johnny Lim
65128c0ad1 Remove severity elements from checkstyle.xml
Remove `error` severity elements from `checkstyle.xml` and rely on the
default setting instead.

Closes gh-6442
2016-07-25 10:30:58 -07:00
Phillip Webb
57bed2e5f6 Use fully qualified checkstyle class names
Update `checkstyle.xml` to use fully qualified class names. This reduces
the number of warning log messages when running `mvn -X` and should also
be slightly faster.
2016-06-09 21:03:28 -07:00
Phillip Webb
e664d585d9 Allow MockRest static imports
Update checkstyle rules to allow static imports from
MockRestRequestMatchers and MockRestResponseCreators.
2016-05-31 09:48:44 -07:00
Andy Wilkinson
de0bcaa50e Update WebMvcTest to auto-configure supported template engines
Closes gh-5801
2016-05-10 10:41:38 +01:00
Andy Wilkinson
eb3180d581 Provide test auto-configuration for Spring REST Docs
This commit introduces a new annotation, @AutoConfigureRestDocs,
which can be used to enable auto-configuration of Spring REST Docs.
The auto-configuration removes the need to use Spring REST Docs' JUnit
rule and will automatically configure MockMvc. Combined with the new
auto-configuration for MockMvc it allows a test class to be free of
boilerplate configuration:

@RunWith(SpringRunner.class)
@WebMvcTest
@AutoConfigureRestDocs(outputDir = "target/generated-snippets",
        uriScheme = "https", uriHost = "api.example.com",
        uriPort = 443)
public class ExampleDocumentationTests {

    @Autowired
    private MockMvc mvc;

    @Test
    public void documentIndex() {
        // …
    }

}

For more advanced customization a RestDocsMockMvcConfigurationCustomizer
bean can be used.

If a RestDocumentationResultHandler is found in the context, it will
be passed to the ConfigurableMockMvcBuilder's alwaysDo method as part
of its customization.

Closes gh-5563
2016-04-04 17:19:51 +01:00
Andy Wilkinson
33f0ea3480 Rework SpringApplicationTest to support web modes
Rework the new testing support so that @SpringApplicationTest can be
used for standard integration tests, web integration tests with a
mock Servlet environment and web integration tests with an embedded
servlet container. This means that it a replacement for 1.3's
@IntegrationTest and @WebIntegrationTest and allows all
SpringApplication testing to be configured using a common annotation.

The old @IntegrationTest and @WebIntegrationTest along with their
supporting classes have been reinstated to their previous form (while
remaining deprecated). This should ensure that they continue to work
in 1.4 exactly as they did in 1.3 giving users a smooth path to
@SpringApplicationTest.

See gh-5477
2016-03-31 21:35:10 -07:00
Phillip Webb
893a6c32f3 Upgrade to checkstyle 6.17
Fixes gh-5547
2016-03-31 13:14:53 -07:00
Phillip Webb
cc5d4b8b7f Add AssertJ checkstyle rule
Closes gh-5083
2016-02-06 15:51:27 -08:00
Andy Wilkinson
d1b47c8a8f Add integration tests for default launch script
This commit adds a suit of integration tests for the launch script. See
the accompanying README.adoc for further details.

Closes gh-4872
2016-01-13 13:28:14 +00:00
Ruben Dijkstra
02830989be Configure Checkstyle line separator so it does not use system default
In its default configuration, Checkstyle would fail on Windows as it
would expect CRLF, the system default line separator.

Closes gh-4666
2015-12-03 09:41:36 +00:00
Phillip Webb
cf68f83ef6 Update checkstyle import order rules
See gh-4234
2015-10-19 13:03:02 -07:00
Phillip Webb
822820f256 Revert "Relax ParenPad checkstyle rule"
The updated formatter means that we can reinstate the rule.

This reverts commit 82fffe3062.
2015-10-09 13:54:33 -07:00
Phillip Webb
2a16c25977 Replace import-control checkstyle file with regex
Fix Eclipse build warnings by replacing checkstyle's import-control file
with a simple regex rule.

Fixes gh-4006
2015-10-07 23:40:14 -07:00
Phillip Webb
82fffe3062 Relax ParenPad checkstyle rule
Eclipse Mars has a formatter bug (#479291) that sometimes adds
additional whitespace on annotations. Until it's fixed we need to relax
the `ParenPad` checkstyle rule.
2015-10-07 23:37:47 -07:00
Stephane Nicoll
e70f02c4a2 Relocate checkstyle configuration
See gh-3928
2015-09-10 09:40:26 +02:00