Commit Graph

181 Commits

Author SHA1 Message Date
Phillip Webb
e07df7e4c6 Remove redundant modifiers 2015-09-08 17:01:30 -07:00
Phillip Webb
6e29ee4557 Polish 2015-09-08 16:04:30 -07:00
Phillip Webb
0335053139 Merge branch '1.2.x' 2015-09-08 14:37:16 -07:00
Phillip Webb
15686ed4fd Reformat code 2015-09-08 14:07:06 -07:00
Phillip Webb
0f6b60d8c8 Organize imports 2015-09-08 14:05:00 -07:00
Phillip Webb
690da89c82 Fix warnings 2015-09-05 00:21:09 -07:00
Phillip Webb
6193b640a4 Polish 2015-09-02 23:44:19 -07:00
Stephane Nicoll
73ee6652fd Use project location to infer the artifactId
On start.spring.io, if you customize the artifactId it creates a zip file
with the same name. The `spring init` command did not have a similar
shortcut.

This commit updates the request to customize the artifactId if none is
set and a custom location was specified. Just as we check for the
presence of a dot to figure out if we have to extract the archive or not,
we check for it to generate an artifactId without an extension.

In practice, `spring init foo` creates a foo directory with a project
whose artifactId is `foo` and `spring init foo.zip` stores a foo.zip
file with the same project (i.e. the artifactId is `foo`).

Closes gh-3714
2015-08-14 17:10:21 +02:00
Stephane Nicoll
04b1de2d1d Add package-name option for spring init
For some reason, we forgot to add an attribute to customize the package
name when using spring init. This is now the case.

Closes gh-3716
2015-08-10 14:32:50 +02:00
Phillip Webb
f0f5f78e25 Polish 2015-07-14 22:17:52 -07:00
Andy Wilkinson
eb5c195c23 Add settings.xml that was missed in 84937551 2015-07-14 13:07:07 +01:00
Andy Wilkinson
8493755178 Configure CLI with repositories from active profiles in settings.xml
This commit enhances the CLI to use the repositories configured in the
profiles declared in a user's Maven settings.xml file during
dependency resolution. A profile must be active for its repositories
to be used.

Closes gh-2703
Closes gh-3483
2015-07-14 12:30:18 +01:00
Stephane Nicoll
97634e85ac Remove unnecessary keyword 2015-07-09 14:33:01 +02:00
Stephane Nicoll
a073a505ae Move spring.oauth2.* to security.oauth2.*
Unfortunately, we have no other choice to flip the ignoreUnknownFields
attribute of `SecurityProperties` has many different target are now set
for that namespace outside the class. See gh-3445 for a potential way
to improve that.

Closes gh-3327
2015-07-08 18:26:25 +02:00
Phillip Webb
fffc6f5dd2 Merge branch '1.2.x' 2015-06-18 12:52:56 -07:00
Phillip Webb
1e40bff174 Polish 2015-06-18 12:52:41 -07:00
Andy Wilkinson
c60d65823b Merge branch '1.2.x' 2015-06-18 17:02:49 +01:00
Andy Wilkinson
7d80f0efea Update tests so that they also work on Windows
See gh-3274
2015-06-18 17:01:09 +01:00
Andy Wilkinson
a6a8d0b221 Merge branch '1.2.x' 2015-06-18 13:31:29 +01:00
Andy Wilkinson
af067ae28b Add files that were accidentally omitted from 5e743fb2
See gh-3274
2015-06-18 13:30:20 +01:00
Andy Wilkinson
77f303b42c Merge branch '1.2.x' 2015-06-18 12:38:33 +01:00
Andy Wilkinson
5e743fb299 Fully honour local repository location configured in settings.xml
Previously, DefaultRepositorySystemSessionAutoConfiguration would
read the local repository configuration from settings.xml, but did
not perform any property interpolation. This would leave placeholders
such as ${user.home} as-is and result in the use of the wrong
location. To address this, the code that reads settings.xml has been
updated to provide the current System properties as a property
interpolation source.

RepositoryConfigurationFactory configures the local repository as a
"remote" repository when the local repository location has been
overridden. This allows spring grab to copy dependencies from the
local repository into the grab output location (configured via the
grape.root system property) rather than having to download them again.
This logic did not consider the customization of the local repository
location via settings.xml so the dependencies would be downloaded again.
To address this, RepositoryConfigurationFactory has been updated to
attempt to use the location configured in settings.xml, before falling
back to the default location.

The logic that reads settings.xml has deliberately been duplicated. It
could have been extracted into a separate class, but this is only a
temporary measure until gh-3275 is tackled. Duplication was deemed
preferable to adding a new public class in 1.2.x that we’d then want to
remove in 1.3.

Closes gh-3274
2015-06-18 12:37:19 +01:00
Dave Syer
2c829c7229 Add support for Spring Retry in CLI 2015-06-12 14:55:07 +01:00
Andy Wilkinson
5defa42436 Update AetherGrapeEngineTests to only use milestone repo when needed
Closes gh-3051
2015-06-10 16:19:07 +01:00
Phillip Webb
09a29a7207 Polish OAuth SSO 2015-06-04 00:56:12 -07:00
Phillip Webb
412b7b9e50 Polish 2015-06-04 00:55:30 -07:00
Stephane Nicoll
b838513fda Upgrade to Spring Framework 4.2.0.RC1
Closes gh-2947
2015-05-27 15:31:10 +02:00
Dave Syer
c5dc3f564b Add @EnableOAuth2Sso and spring.oauth2.sso.*
User can enable OAuth2 SSO by declaring the intent (@EnableOAuth2Sso)
and also configuring the client properties (spring.oauth2.client.*).
The spring.oauth2.sso.* are only needed to change the path for the
login (defaults to /login) - any other security configuration for the
protected resources can be added in a WebSecurityConfigurerAdapter
which carries the @EnableOAuth2Sso annotation.
2015-05-26 07:23:26 +01:00
Greg Turnquist
53f67a448f Auto-configure Spring Security OAuth2 when detected on the classpath
* Automatically spin up Authorization Server and Resource Server
* Automatically configures method level security included OAuth2Expression handler
* Wrote extensive unit tests verifying default behavior as well as the auto-configuration backing off when custom Authorization/Resource servers are included
* Created org.springframework.boot.security.oauth2 subpackage to contain it
* Can also disable either resource of authorization server completely with a single property for each
* Print out the auto-generated secrets and other settings
* Added spring-boot-sample-secure-oauth2 to provide a sample that can be run and poked with curl as well as some automated tests.
* Make users ask for which servers to install by adding @Enable*
* User has to @EnableGlobalMethodSecurity instead of using properties files

Add Spring Security OAuth2 support to Spring Boot CLI

* Triggered from either @EnableAuthorizationServer or @EnableResourceServer
* Needs to have @EnableGlobalMethodSecurity to allow picking the annotation model.
* By default, comes with import support for @PreAuthorize, @PreFilter, @PostAuthorize, and @PostFilter via a single start import
* Also need import support for the enable annotations mentioned above.
* Added extra test case and sample (oauth2.groovy)
2015-05-26 06:34:43 +01:00
Stephane Nicoll
b20d11fe9c polish
Rework 155c60b7 to structure the code consistently, in particular with a more
natural order of attributes. Update test to use non-default values to ensure
that the customization has been applied.

See gh-2793
2015-05-13 14:08:17 +02:00
Eddú Meléndez
0b8fd67507 Add extra attributes to the init command
Update the CLI init command to expose additional attributes supported
by Spring Initializr. These are: groupId, artifactId, version, name,
description and language.

Closes gh-2793 and gh-2907
2015-05-13 14:07:11 +02:00
Andy Wilkinson
51c49b69c5 Support bom-based dependency management in the CLI
Previously, the CLI’s dependency management used proprietary Properties
file-based metadata to configure its dependency management. Since
spring-boot-gradle-plugin’s move to using the separate dependency
management plugin the CLI was the only user of this format.

This commit updates the CLI to use Maven boms to configure its
dependency management. By default it uses the spring-boot-dependencies
bom. This configuration can be augmented and overridden using the new
@DependencyManagementBom annotation which replaces @GrabMetadata.

Closes gh-2688
Closes gh-2439
2015-05-07 14:58:23 +01:00
Andy Wilkinson
8b1022effa Upgrade to Spring Batch 3.0.4 snapshots
Closes gh-2712
2015-04-07 18:47:28 +01:00
Andy Wilkinson
bc99ad2120 Ignore Batch tests that use JDBC as they don’t work with Spring 4.2
Spring Framework’s ParamterizedRowMapper has been deprecated since
3.1 and has been removed in 4.2. Spring Batch currently relies on
ParameterizedRowMapper, making it incompatible with 4.2. To allow us to
build successfully against 4.2, this commit ignores Spring Boot’s tests
that use Spring Batch’s JDBC support.

See gh-2575
2015-03-25 10:48:00 +00:00
Phillip Webb
56e31a8c6b Polish 2015-02-23 19:21:37 -08:00
Stephane Nicoll
9d0e50c6ac Support of spring initializr meta-data v2.1
Update the `init` command to support the latest meta-data format. Recent
Spring Initializr version also supports Spring Boot CLI now and generates
a textual service capabilities when requested. The command no longer
generates the capabilities of the service unless said service does not
support it.

Closes gh-2515
2015-02-18 17:43:53 +01:00
Stephane Nicoll
8efdffbc0e Smarter output detection for generated projects
Previously, specifying a simple target name for a regular project would
store the (zip) archive in a file matching the target name. Only adding a
slash at the end of the name allows to extract it as a directory. It
turns out that such convention is not easy to catch and if a simple name
is provided on the command-line, the user probably wants to create a
directory with such a name with the content of the project.

Note that if a build file is required and the name does not have any
extension, we still store a file with the required name as auto-detecting
the extension to use is not that easy.

Fixes gh-2056
2014-12-05 14:43:31 +01:00
Phillip Webb
447c9ff204 Polish 2014-12-02 15:19:51 -08:00
Graeme Rocher
dbcbebca4a Propagate exception / test failures so that the correct status code is returned.
Fixes gh-2048 and fixes gh-2051
2014-12-02 16:22:47 +00:00
Andy Wilkinson
8520554eb2 Allow the SpringApplication class used by the CLI to be configured
This commit adds support to the CLI for launching a custom
SpringApplication implementation. The class that is launched can be
configured using the spring.application.class.name System property
or the SPRING_APPLICATION_CLASS_NAME environment variable with the
former taking priority.

Closes gh-2030
2014-12-02 10:01:05 +00:00
Phillip Webb
c34cfb27a3 Polish 2014-11-19 10:52:26 -08:00
Stephane Nicoll
8f488bd019 Update init to new metadata format
Spring initializr now declares an improved metadata format (v2).

InitializrServiceMetadata has been updated to parse this format. Note
that the client could be further improved by using HAL generated links.

Closes gh-1953
2014-11-19 16:38:53 +01:00
Phillip Webb
6027b2405c Add 'User-Agent' header to CLI REST calls
Update the InitializrService so that a 'SpringBootCli' User-Agent header
is sent with each request. This should allow the server-side code to
gracefully evolve the JSON format if needed.

Fixes gh-1869
2014-11-10 21:47:01 -08:00
Phillip Webb
b6bacd5e8a Upgrade to Servlet 3.1, Tomcat 8 and Jetty 9
Upgrade to latest versions of Tomcat and Jetty and to the latest Servlet
API whilst will remaining compatible with Tomcat 7 and Jetty 8.

Fixes gh-1832, gh-369
2014-11-05 16:35:34 -08:00
Phillip Webb
a973fd41f4 Polish 2014-11-03 18:49:20 -08:00
Stephane Nicoll
6a18ece6a2 Explicit type takes precedence over build and format
Prior to this commit, specifying the --format and/or --build options
alongside --type did not use the explicit type as it should. This commit
ignores the --build and --format options if a type is explicitly set.

Fixes gh-1807
2014-11-03 13:12:06 +01:00
Stephane Nicoll
2e07f003c9 Init command takes the output as last argument
This commit moves the --output switch to a regular argument. This aligns
to other command, i.e. spring init my-project.zip would save the project
to "my-project.zip" in the current directory.

This commit also auto-detects the --extract option if the location ends
with a slash, i.e. spring init demo/ would extract the content of the
project in a demo directory that is local to the current directory.

Fixes gh-1802
2014-11-03 11:52:16 +01:00
Phillip Webb
830ce80824 Polish CLI init command
Rename a few classes and methods and extract some logic into helper
classes. Also change 2 char shortcuts to a single char.

Closes gh-1751
2014-11-01 09:05:47 -07:00
Phillip Webb
b89e5e0ab7 Apply eclipse formatting rules
Apply eclipse formatting rules to b2fe2dd9.

See gh-1751
2014-11-01 08:20:12 -07:00
Stephane Nicoll
b2fe2dd912 Add init command to the CLI
This commit adds a new command to the CLI that allows to initialize a new
project from the command line. It uses the Spring initializr service to
actually generate the project.

The command offers two main operations:

1. Listing the capabilities of the service (--list or -l). This basically
dumps the defaults of a given service and the list of dependencies and
project types it supports
2. Generating a project. By default, http://start.spring.io is used and
its configured defaults are applied. Running spring init would therefore
have the same effect as clicking the 'generate project' on the UI without
entering any extra information. No file is overwritten by default.

The generation can be customized with the following options:

* --boot-version (-bv) Spring Boot version the project should use
* --dependencies (-d) comma separated list of dependencies to add to the
generated project
* --java-version (-jv) Java version to use
* --packaging (-p) the packaging for the project (jar, war)
* --target the url of the service to use

The actual type of the project can be defined in several ways:

1. Using the --type (-t) option that identifies a type that is supported
by the service
2. A combination of --build and/or --format that can be used to uniquely
identify matching these tags. Build represents the build system to use
(e.g. maven or gradle) while --format defines the format of the generated
project.

The project is saved on disk with the name provided by the server through
the Content-Disposition header, if any. It is possible to force it with
the --output option. It is possible to overwrite existing files by adding
the --force (-f) flag.

The --extract (-x) option allows to extract the project instead of saving
the zip archive. By default, the project is extracted in the current
working directory but it is possible to specify an alternate directory
using the --output option.

Fixes gh-1751
2014-10-31 08:39:03 +01:00