Commit b69c659d authored by Phillip Webb's avatar Phillip Webb

Polish

parent d84a77e4
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-build</artifactId> <artifactId>spring-boot-build</artifactId>
...@@ -95,15 +96,20 @@ ...@@ -95,15 +96,20 @@
<taskdef resource="net/sf/antcontrib/antcontrib.properties" /> <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<taskdef name="stringutil" classname="ise.antelope.tasks.StringUtilTask" /> <taskdef name="stringutil" classname="ise.antelope.tasks.StringUtilTask" />
<var name="version-type" value="${project.version}" /> <var name="version-type" value="${project.version}" />
<propertyregex property="version-type" override="true" input="${version-type}" regexp=".*\.(.*)" replace="\1" /> <propertyregex property="version-type" override="true"
<propertyregex property="version-type" override="true" input="${version-type}" regexp="(M)\d+" replace="MILESTONE" /> input="${version-type}" regexp=".*\.(.*)" replace="\1" />
<propertyregex property="version-type" override="true" input="${version-type}" regexp="(RC)\d+" replace="MILESTONE" /> <propertyregex property="version-type" override="true"
<propertyregex property="version-type" override="true" input="${version-type}" regexp="BUILD-(.*)" replace="SNAPSHOT" /> input="${version-type}" regexp="(M)\d+" replace="MILESTONE" />
<propertyregex property="version-type" override="true"
input="${version-type}" regexp="(RC)\d+" replace="MILESTONE" />
<propertyregex property="version-type" override="true"
input="${version-type}" regexp="BUILD-(.*)" replace="SNAPSHOT" />
<stringutil string="${version-type}" property="profile"> <stringutil string="${version-type}" property="profile">
<lowercase /> <lowercase />
</stringutil> </stringutil>
<echo message="Writing settings for ${profile} profile" /> <echo message="Writing settings for ${profile} profile" />
<copy file=".settings-template.xml" tofile="settings.xml" overwrite="true"> <copy file=".settings-template.xml" tofile="settings.xml"
overwrite="true">
<filterset> <filterset>
<filter token="profile" value="${profile}" /> <filter token="profile" value="${profile}" />
</filterset> </filterset>
...@@ -120,7 +126,8 @@ ...@@ -120,7 +126,8 @@
<inherited>false</inherited> <inherited>false</inherited>
<configuration> <configuration>
<target> <target>
<property name="sourceFile" value="spring-boot-starters/spring-boot-starter-parent/pom.xml" /> <property name="sourceFile"
value="spring-boot-starters/spring-boot-starter-parent/pom.xml" />
<xslt in="${sourceFile}" out="${sourceFile}.new" force="true"> <xslt in="${sourceFile}" out="${sourceFile}.new" force="true">
<style> <style>
<string><![CDATA[ <string><![CDATA[
......
...@@ -35,6 +35,8 @@ import org.springframework.util.ClassUtils; ...@@ -35,6 +35,8 @@ import org.springframework.util.ClassUtils;
@ConfigurationProperties(name = "management", ignoreUnknownFields = false) @ConfigurationProperties(name = "management", ignoreUnknownFields = false)
public class ManagementServerProperties implements SecurityPrequisite { public class ManagementServerProperties implements SecurityPrequisite {
private static final String SECURITY_CHECK_CLASS = "org.springframework.security.config.http.SessionCreationPolicy";
private Integer port; private Integer port;
private InetAddress address; private InetAddress address;
...@@ -119,9 +121,9 @@ public class ManagementServerProperties implements SecurityPrequisite { ...@@ -119,9 +121,9 @@ public class ManagementServerProperties implements SecurityPrequisite {
} }
private static Security maybeCreateSecurity() { private static Security maybeCreateSecurity() {
return (ClassUtils.isPresent( if (ClassUtils.isPresent(SECURITY_CHECK_CLASS, null)) {
"org.springframework.security.config.http.SessionCreationPolicy", null) ? new Security() return new Security();
: null); }
return null;
} }
} }
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -38,6 +38,8 @@ import org.springframework.util.ClassUtils; ...@@ -38,6 +38,8 @@ import org.springframework.util.ClassUtils;
public class AuthenticationAuditListener implements public class AuthenticationAuditListener implements
ApplicationListener<AbstractAuthenticationEvent>, ApplicationEventPublisherAware { ApplicationListener<AbstractAuthenticationEvent>, ApplicationEventPublisherAware {
private static final String WEB_LISTENER_CHECK_CLASS = "org.springframework.security.web.authentication.switchuser.AuthenticationSwitchUserEvent";
private ApplicationEventPublisher publisher; private ApplicationEventPublisher publisher;
private WebAuditListener webListener = maybeCreateWebListener(); private WebAuditListener webListener = maybeCreateWebListener();
...@@ -48,10 +50,7 @@ public class AuthenticationAuditListener implements ...@@ -48,10 +50,7 @@ public class AuthenticationAuditListener implements
} }
private static WebAuditListener maybeCreateWebListener() { private static WebAuditListener maybeCreateWebListener() {
if (ClassUtils if (ClassUtils.isPresent(WEB_LISTENER_CHECK_CLASS, null)) {
.isPresent(
"org.springframework.security.web.authentication.switchuser.AuthenticationSwitchUserEvent",
null)) {
return new WebAuditListener(); return new WebAuditListener();
} }
return null; return null;
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId> <artifactId>spring-boot-dependencies</artifactId>
...@@ -215,11 +216,11 @@ ...@@ -215,11 +216,11 @@
<artifactId>groovy-xml</artifactId> <artifactId>groovy-xml</artifactId>
<version>${groovy.version}</version> <version>${groovy.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.codehaus.groovy</groupId> <groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-templates</artifactId> <artifactId>groovy-templates</artifactId>
<version>${groovy.version}</version> <version>${groovy.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.eclipse.jetty</groupId> <groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-webapp</artifactId> <artifactId>jetty-webapp</artifactId>
...@@ -286,11 +287,11 @@ ...@@ -286,11 +287,11 @@
<artifactId>mongo-java-driver</artifactId> <artifactId>mongo-java-driver</artifactId>
<version>${mongodb.version}</version> <version>${mongodb.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.projectreactor</groupId> <groupId>org.projectreactor</groupId>
<artifactId>reactor-core</artifactId> <artifactId>reactor-core</artifactId>
<version>${reactor.version}</version> <version>${reactor.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.projectreactor</groupId> <groupId>org.projectreactor</groupId>
<artifactId>reactor-spring</artifactId> <artifactId>reactor-spring</artifactId>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -38,7 +39,8 @@ ...@@ -38,7 +39,8 @@
<module>spring-boot-sample-websocket</module> <module>spring-boot-sample-websocket</module>
<module>spring-boot-sample-xml</module> <module>spring-boot-sample-xml</module>
</modules> </modules>
<!-- No dependencies - otherwise the samples won't work if you change the parent --> <!-- No dependencies - otherwise the samples won't work if you change the
parent -->
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
......
...@@ -3,14 +3,14 @@ buildscript { ...@@ -3,14 +3,14 @@ buildscript {
springBootVersion = '1.0.0.BUILD-SNAPSHOT' springBootVersion = '1.0.0.BUILD-SNAPSHOT'
springLoadedVersion = '1.1.5.RELEASE' springLoadedVersion = '1.1.5.RELEASE'
} }
repositories { repositories {
mavenLocal() mavenLocal()
maven { url "http://repo.springsource.org/libs-snapshot" } maven { url "http://repo.springsource.org/libs-snapshot" }
} }
dependencies { dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath("org.springsource.loaded:springloaded:${springLoadedVersion}") classpath("org.springsource.loaded:springloaded:${springLoadedVersion}")
} }
} }
...@@ -22,21 +22,19 @@ apply plugin: 'spring-boot' ...@@ -22,21 +22,19 @@ apply plugin: 'spring-boot'
mainClassName = "sample.ui.SampleWebUiApplication" mainClassName = "sample.ui.SampleWebUiApplication"
jar { jar {
baseName = 'spring-boot-sample-simple' baseName = 'spring-boot-sample-simple'
version = '0.5.0' version = '0.5.0'
} }
repositories { repositories {
mavenCentral() mavenCentral()
maven { url "http://repo.springsource.org/libs-snapshot" } maven { url "http://repo.springsource.org/libs-snapshot" }
} }
dependencies { dependencies {
compile("org.springframework.boot:spring-boot-starter-thymeleaf") compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.hibernate:hibernate-validator") compile("org.hibernate:hibernate-validator")
testCompile("org.springframework.boot:spring-boot-starter-test") testCompile("org.springframework.boot:spring-boot-starter-test")
} }
task wrapper(type: Wrapper) { task wrapper(type: Wrapper) { gradleVersion = '1.6' }
gradleVersion = '1.6'
}
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<!-- Your own application should inherit from spring-boot-starter-parent --> <!-- Your own application should inherit from spring-boot-starter-parent -->
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
...@@ -19,7 +19,6 @@ package org.springframework.boot.gradle ...@@ -19,7 +19,6 @@ package org.springframework.boot.gradle
import org.springframework.boot.loader.tools.Layout import org.springframework.boot.loader.tools.Layout
import org.springframework.boot.loader.tools.Layouts import org.springframework.boot.loader.tools.Layouts
/** /**
* Gradle DSL Extension for 'Spring Boot'. Most of the time Spring Boot can guess the * Gradle DSL Extension for 'Spring Boot'. Most of the time Spring Boot can guess the
* settings in this extension, but occasionally you might need to explicitly set one * settings in this extension, but occasionally you might need to explicitly set one
...@@ -98,7 +97,7 @@ public class SpringBootPluginExtension { ...@@ -98,7 +97,7 @@ public class SpringBootPluginExtension {
Layout convertLayout() { Layout convertLayout() {
(layout == null ? null : layout.layout) (layout == null ? null : layout.layout)
} }
/** /**
* Location of an agent jar to attach to the VM when running the application with runJar task. * Location of an agent jar to attach to the VM when running the application with runJar task.
*/ */
...@@ -108,5 +107,4 @@ public class SpringBootPluginExtension { ...@@ -108,5 +107,4 @@ public class SpringBootPluginExtension {
* Flag to indicate that the agent requires -noverify (and the plugin will refuse to start if it is not set) * Flag to indicate that the agent requires -noverify (and the plugin will refuse to start if it is not set)
*/ */
Boolean noverify; Boolean noverify;
} }
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -44,7 +44,7 @@ public class ComputeMain implements Action<Task> { ...@@ -44,7 +44,7 @@ public class ComputeMain implements Action<Task> {
public void execute(Task task) { public void execute(Task task) {
if (task instanceof JavaExec) { if (task instanceof JavaExec) {
final JavaExec exec = (JavaExec) task; final JavaExec exec = (JavaExec) task;
project.afterEvaluate(new Action<Project>() { this.project.afterEvaluate(new Action<Project>() {
@Override @Override
public void execute(Project project) { public void execute(Project project) {
addMain(exec); addMain(exec);
...@@ -54,9 +54,9 @@ public class ComputeMain implements Action<Task> { ...@@ -54,9 +54,9 @@ public class ComputeMain implements Action<Task> {
} }
private void addMain(JavaExec exec) { private void addMain(JavaExec exec) {
if (exec.getMain()==null) { if (exec.getMain() == null) {
project.getLogger().debug("Computing main for: " + exec); this.project.getLogger().debug("Computing main for: " + exec);
project.setProperty("mainClassName", findMainClass(project)); this.project.setProperty("mainClassName", findMainClass(this.project));
} }
} }
...@@ -65,9 +65,11 @@ public class ComputeMain implements Action<Task> { ...@@ -65,9 +65,11 @@ public class ComputeMain implements Action<Task> {
if (main == null) { if (main == null) {
return null; return null;
} }
project.getLogger().debug("Looking for main in: " + main.getOutput().getClassesDir()); project.getLogger().debug(
"Looking for main in: " + main.getOutput().getClassesDir());
try { try {
String mainClass = MainClassFinder.findMainClass(main.getOutput().getClassesDir()); String mainClass = MainClassFinder.findMainClass(main.getOutput()
.getClassesDir());
project.getLogger().info("Computed main class: " + mainClass); project.getLogger().info("Computed main class: " + mainClass);
return mainClass; return mainClass;
} }
......
...@@ -42,7 +42,7 @@ public class RunApp extends DefaultTask { ...@@ -42,7 +42,7 @@ public class RunApp extends DefaultTask {
@TaskAction @TaskAction
public void runApp() { public void runApp() {
final Project project = getProject(); final Project project = getProject();
final SourceSet main = ComputeMain.findMainSourceSet(project); final SourceSet main = ComputeMain.findMainSourceSet(project);
...@@ -52,7 +52,8 @@ public class RunApp extends DefaultTask { ...@@ -52,7 +52,8 @@ public class RunApp extends DefaultTask {
SourceDirectorySet resources = main.getResources(); SourceDirectorySet resources = main.getResources();
allResources.addAll(resources.getSrcDirs()); allResources.addAll(resources.getSrcDirs());
outputs = main.getOutput().getResourcesDir(); outputs = main.getOutput().getResourcesDir();
} else { }
else {
outputs = null; outputs = null;
} }
......
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -41,6 +41,8 @@ import org.springframework.core.task.TaskRejectedException; ...@@ -41,6 +41,8 @@ import org.springframework.core.task.TaskRejectedException;
*/ */
public class RunWithAgent implements Action<Task> { public class RunWithAgent implements Action<Task> {
private static final String SPRING_LOADED_AGENT_CLASSNAME = "org.springsource.loaded.agent.SpringLoadedAgent";
private File agent; private File agent;
private Project project; private Project project;
...@@ -52,39 +54,40 @@ public class RunWithAgent implements Action<Task> { ...@@ -52,39 +54,40 @@ public class RunWithAgent implements Action<Task> {
} }
@Override @Override
public void execute(Task task) { public void execute(final Task task) {
if (task instanceof JavaExec) { if (task instanceof JavaExec) {
final JavaExec exec = (JavaExec) task; this.project.afterEvaluate(new Action<Project>() {
project.afterEvaluate(new Action<Project>() {
@Override @Override
public void execute(Project project) { public void execute(Project project) {
addAgent(exec); addAgent((JavaExec) task);
} }
}); });
} }
if (task instanceof RunApp) { if (task instanceof RunApp) {
final RunApp exec = (RunApp) task; this.project.beforeEvaluate(new Action<Project>() {
project.beforeEvaluate(new Action<Project>() {
@Override @Override
public void execute(Project project) { public void execute(Project project) {
addAgent(exec); addAgent((RunApp) task);
} }
}); });
} }
} }
private void addAgent(RunApp exec) { private void addAgent(RunApp exec) {
project.getLogger().debug("Attaching to: " + exec); this.project.getLogger().debug("Attaching to: " + exec);
findAgent(project.getExtensions().getByType(SpringBootPluginExtension.class)); findAgent(this.project.getExtensions().getByType(SpringBootPluginExtension.class));
if (this.agent != null) { if (this.agent != null) {
exec.doFirst(new Action<Task>() { exec.doFirst(new Action<Task>() {
@Override @Override
public void execute(Task task) { public void execute(Task task) {
project.getLogger().info( RunWithAgent.this.project.getLogger().info(
"Attaching agent: " + RunWithAgent.this.agent); "Attaching agent: " + RunWithAgent.this.agent);
if (RunWithAgent.this.noverify!=null && RunWithAgent.this.noverify && !AgentAttacher.hasNoVerify()) { if (RunWithAgent.this.noverify != null && RunWithAgent.this.noverify
&& !AgentAttacher.hasNoVerify()) {
throw new TaskRejectedException( throw new TaskRejectedException(
"The JVM must be started with -noverify for this agent to work. You can use JAVA_OPTS to add that flag."); "The JVM must be started with -noverify for this "
+ "agent to work. You can use JAVA_OPTS "
+ "to add that flag.");
} }
AgentAttacher.attach(RunWithAgent.this.agent); AgentAttacher.attach(RunWithAgent.this.agent);
} }
...@@ -93,10 +96,10 @@ public class RunWithAgent implements Action<Task> { ...@@ -93,10 +96,10 @@ public class RunWithAgent implements Action<Task> {
} }
private void addAgent(JavaExec exec) { private void addAgent(JavaExec exec) {
project.getLogger().debug("Attaching to: " + exec); this.project.getLogger().debug("Attaching to: " + exec);
findAgent(project.getExtensions().getByType(SpringBootPluginExtension.class)); findAgent(this.project.getExtensions().getByType(SpringBootPluginExtension.class));
if (this.agent != null) { if (this.agent != null) {
project.getLogger().info("Attaching agent: " + this.agent); this.project.getLogger().info("Attaching agent: " + this.agent);
exec.jvmArgs("-javaagent:" + this.agent.getAbsolutePath()); exec.jvmArgs("-javaagent:" + this.agent.getAbsolutePath());
if (this.noverify != null && this.noverify) { if (this.noverify != null && this.noverify) {
exec.jvmArgs("-noverify"); exec.jvmArgs("-noverify");
...@@ -108,20 +111,20 @@ public class RunWithAgent implements Action<Task> { ...@@ -108,20 +111,20 @@ public class RunWithAgent implements Action<Task> {
if (this.agent != null) { if (this.agent != null) {
return; return;
} }
this.noverify = project.getExtensions() this.noverify = this.project.getExtensions()
.getByType(SpringBootPluginExtension.class).getNoverify(); .getByType(SpringBootPluginExtension.class).getNoverify();
project.getLogger().info("Finding agent"); this.project.getLogger().info("Finding agent");
if (project.hasProperty("run.agent")) { if (this.project.hasProperty("run.agent")) {
this.agent = project.file(project.property("run.agent")); this.agent = this.project.file(this.project.property("run.agent"));
} else if (extension.getAgent() != null) { }
else if (extension.getAgent() != null) {
this.agent = extension.getAgent(); this.agent = extension.getAgent();
} }
if (this.agent == null) { if (this.agent == null) {
try { try {
Class<?> loaded = Class Class<?> loaded = Class.forName(SPRING_LOADED_AGENT_CLASSNAME);
.forName("org.springsource.loaded.agent.SpringLoadedAgent");
if (this.agent == null && loaded != null) { if (this.agent == null && loaded != null) {
if (this.noverify==null) { if (this.noverify == null) {
this.noverify = true; this.noverify = true;
} }
CodeSource source = loaded.getProtectionDomain().getCodeSource(); CodeSource source = loaded.getProtectionDomain().getCodeSource();
...@@ -129,11 +132,12 @@ public class RunWithAgent implements Action<Task> { ...@@ -129,11 +132,12 @@ public class RunWithAgent implements Action<Task> {
this.agent = new File(source.getLocation().getFile()); this.agent = new File(source.getLocation().getFile());
} }
} }
} catch (ClassNotFoundException e) { }
catch (ClassNotFoundException ex) {
// ignore; // ignore;
} }
} }
project.getLogger().debug("Agent: " + this.agent); this.project.getLogger().debug("Agent: " + this.agent);
} }
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -23,22 +23,22 @@ import java.util.List; ...@@ -23,22 +23,22 @@ import java.util.List;
import com.sun.tools.attach.VirtualMachine; import com.sun.tools.attach.VirtualMachine;
/** /**
* Utility class to attach an instrumentation agent to the running JVM.
*
* @author Dave Syer * @author Dave Syer
*/ */
public abstract class AgentAttacher { public abstract class AgentAttacher {
public static void attach(File agent) { public static void attach(File agent) {
String nameOfRunningVM = ManagementFactory.getRuntimeMXBean().getName(); String name = ManagementFactory.getRuntimeMXBean().getName();
int p = nameOfRunningVM.indexOf('@'); String pid = name.substring(0, name.indexOf('@'));
String pid = nameOfRunningVM.substring(0, p);
try { try {
VirtualMachine vm = VirtualMachine.attach(pid); VirtualMachine vm = VirtualMachine.attach(pid);
vm.loadAgent(agent.getAbsolutePath()); vm.loadAgent(agent.getAbsolutePath());
vm.detach(); vm.detach();
} }
catch (Exception e) { catch (Exception ex) {
throw new RuntimeException(e); throw new RuntimeException(ex);
} }
} }
......
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -49,6 +49,11 @@ import org.springframework.boot.loader.tools.MainClassFinder; ...@@ -49,6 +49,11 @@ import org.springframework.boot.loader.tools.MainClassFinder;
@Execute(phase = LifecyclePhase.TEST_COMPILE) @Execute(phase = LifecyclePhase.TEST_COMPILE)
public class RunMojo extends AbstractMojo { public class RunMojo extends AbstractMojo {
/**
*
*/
private static final String SPRING_LOADED_AGENT_CLASSNAME = "org.springsource.loaded.agent.SpringLoadedAgent";
/** /**
* The Maven project. * The Maven project.
*/ */
...@@ -120,8 +125,7 @@ public class RunMojo extends AbstractMojo { ...@@ -120,8 +125,7 @@ public class RunMojo extends AbstractMojo {
private void findAgent() { private void findAgent() {
try { try {
Class<?> loaded = Class Class<?> loaded = Class.forName(SPRING_LOADED_AGENT_CLASSNAME);
.forName("org.springsource.loaded.agent.SpringLoadedAgent");
if (this.agent == null && loaded != null) { if (this.agent == null && loaded != null) {
if (this.noverify == null) { if (this.noverify == null) {
this.noverify = true; this.noverify = true;
...@@ -132,7 +136,7 @@ public class RunMojo extends AbstractMojo { ...@@ -132,7 +136,7 @@ public class RunMojo extends AbstractMojo {
} }
} }
} }
catch (ClassNotFoundException e) { catch (ClassNotFoundException ex) {
// ignore; // ignore;
} }
} }
......
...@@ -257,7 +257,7 @@ archive, there are some limitations in the JSP support. ...@@ -257,7 +257,7 @@ archive, there are some limitations in the JSP support.
executable WAR will work, and will also be deployable to a standard executable WAR will work, and will also be deployable to a standard
container (Tomcat included). An executable JAR will not work because container (Tomcat included). An executable JAR will not work because
of a hard coded file patter in Tomcat itself. of a hard coded file patter in Tomcat itself.
* Jetty does not currently work as an embedded container with * Jetty does not currently work as an embedded container with
JSPs. There should be a way to make it work, so hopefully someone JSPs. There should be a way to make it work, so hopefully someone
can figure it out (pull requests always welcome). can figure it out (pull requests always welcome).
......
...@@ -262,7 +262,7 @@ public class JettyEmbeddedServletContainerFactory extends ...@@ -262,7 +262,7 @@ public class JettyEmbeddedServletContainerFactory extends
*/ */
public void setServerCustomizers( public void setServerCustomizers(
Collection<? extends JettyServerCustomizer> customizers) { Collection<? extends JettyServerCustomizer> customizers) {
Assert.notNull(customizers, "JettyServerCustomizers must not be null"); Assert.notNull(customizers, "Customizers must not be null");
this.jettyServerCustomizers = new ArrayList<JettyServerCustomizer>(customizers); this.jettyServerCustomizers = new ArrayList<JettyServerCustomizer>(customizers);
} }
...@@ -281,7 +281,7 @@ public class JettyEmbeddedServletContainerFactory extends ...@@ -281,7 +281,7 @@ public class JettyEmbeddedServletContainerFactory extends
* @param customizers the customizers to add * @param customizers the customizers to add
*/ */
public void addServerCustomizers(JettyServerCustomizer... customizers) { public void addServerCustomizers(JettyServerCustomizer... customizers) {
Assert.notNull(customizers, "Configurations must not be null"); Assert.notNull(customizers, "Customizers must not be null");
this.jettyServerCustomizers.addAll(Arrays.asList(customizers)); this.jettyServerCustomizers.addAll(Arrays.asList(customizers));
} }
......
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
......
/* /*
* Copyright 2012-2013 the original author or authors. * Copyright 2012-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
...@@ -38,6 +38,7 @@ import static org.mockito.Mockito.mock; ...@@ -38,6 +38,7 @@ import static org.mockito.Mockito.mock;
* {@link JettyEmbeddedServletContainer}. * {@link JettyEmbeddedServletContainer}.
* *
* @author Phillip Webb * @author Phillip Webb
* @author Dave Syer
*/ */
public class JettyEmbeddedServletContainerFactoryTests extends public class JettyEmbeddedServletContainerFactoryTests extends
AbstractEmbeddedServletContainerFactoryTests { AbstractEmbeddedServletContainerFactoryTests {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment