diff --git a/spring-cli/src/main/java/org/springframework/cli/compiler/DependencyCustomizer.java b/spring-cli/src/main/java/org/springframework/cli/compiler/DependencyCustomizer.java index dd8d4617b2b..405f69236ec 100644 --- a/spring-cli/src/main/java/org/springframework/cli/compiler/DependencyCustomizer.java +++ b/spring-cli/src/main/java/org/springframework/cli/compiler/DependencyCustomizer.java @@ -222,14 +222,26 @@ public class DependencyCustomizer { * @param version the version * @return this {@link DependencyCustomizer} for continued use */ - @SuppressWarnings("unchecked") public DependencyCustomizer add(String group, String module, String version) { + return this.add(group, module, version, true); + } + + /** + * Add a single dependencies. + * @param group the group ID + * @param module the module ID + * @param version the version + * @return this {@link DependencyCustomizer} for continued use + */ + @SuppressWarnings("unchecked") + public DependencyCustomizer add(String group, String module, String version, + boolean transitive) { if (canAdd()) { Map dependency = new HashMap(); dependency.put("group", group); dependency.put("module", module); dependency.put("version", version); - dependency.put("transitive", true); + dependency.put("transitive", transitive); return add(dependency); } return this; diff --git a/spring-cli/src/main/java/org/springframework/cli/compiler/autoconfigure/SpringSecurityCompilerAutoConfiguration.java b/spring-cli/src/main/java/org/springframework/cli/compiler/autoconfigure/SpringSecurityCompilerAutoConfiguration.java new file mode 100644 index 00000000000..dde31cca422 --- /dev/null +++ b/spring-cli/src/main/java/org/springframework/cli/compiler/autoconfigure/SpringSecurityCompilerAutoConfiguration.java @@ -0,0 +1,58 @@ +/* + * Copyright 2012-2013 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.cli.compiler.autoconfigure; + +import org.codehaus.groovy.ast.ClassNode; +import org.codehaus.groovy.control.customizers.ImportCustomizer; +import org.springframework.cli.compiler.AstUtils; +import org.springframework.cli.compiler.CompilerAutoConfiguration; +import org.springframework.cli.compiler.DependencyCustomizer; + +/** + * {@link CompilerAutoConfiguration} for Spring Security. + * + * @author Dave Syer + */ +public class SpringSecurityCompilerAutoConfiguration extends CompilerAutoConfiguration { + + @Override + public boolean matches(ClassNode classNode) { + return AstUtils.hasAtLeastOneAnnotation(classNode, "EnableWebSecurity"); + } + + @Override + public void applyDependencies(DependencyCustomizer dependencies) { + dependencies + .ifAnyMissingClasses( + "org.springframework.security.config.annotation.web.configuration.EnableWebSecurity") + .add("org.springframework.security", "spring-security-config", + dependencies.getProperty("spring.security.version")) + .add("org.springframework.security", "spring-security-web", + dependencies.getProperty("spring.security.version"), false); + } + + @Override + public void applyImports(ImportCustomizer imports) { + imports.addImports("org.springframework.security.core.Authentication", + "org.springframework.security.core.authority.AuthorityUtils") + .addStarImports( + "org.springframework.security.config.annotation.web.configuration", + "org.springframework.security.authentication", + "org.springframework.security.config.annotation.web", + "org.springframework.security.config.annotation.web.builders"); + } +} diff --git a/spring-cli/src/main/resources/META-INF/services/org.springframework.cli.compiler.CompilerAutoConfiguration b/spring-cli/src/main/resources/META-INF/services/org.springframework.cli.compiler.CompilerAutoConfiguration index d38b20b129d..c42fcbfc78a 100644 --- a/spring-cli/src/main/resources/META-INF/services/org.springframework.cli.compiler.CompilerAutoConfiguration +++ b/spring-cli/src/main/resources/META-INF/services/org.springframework.cli.compiler.CompilerAutoConfiguration @@ -2,4 +2,4 @@ org.springframework.cli.compiler.autoconfigure.SpringCompilerAutoConfiguration org.springframework.cli.compiler.autoconfigure.SpringMvcCompilerAutoConfiguration org.springframework.cli.compiler.autoconfigure.SpringBatchCompilerAutoConfiguration org.springframework.cli.compiler.autoconfigure.SpringIntegrationCompilerAutoConfiguration - +org.springframework.cli.compiler.autoconfigure.SpringSecurityCompilerAutoConfiguration diff --git a/spring-cli/src/main/resources/META-INF/springcli.properties b/spring-cli/src/main/resources/META-INF/springcli.properties index e8c9937e720..92129e177f6 100644 --- a/spring-cli/src/main/resources/META-INF/springcli.properties +++ b/spring-cli/src/main/resources/META-INF/springcli.properties @@ -1,6 +1,7 @@ spring.zero.version: ${project.version} spring.version: ${spring.version} spring.batch.version: ${spring.batch.version} +spring.security.version: ${spring.security.version} spring.integration.version: ${spring.integration.version} groovy.version: ${groovy.version} jetty.version: ${jetty.version}