Skip to content

Commit

Permalink
Polish contribution
Browse files Browse the repository at this point in the history
  • Loading branch information
snicoll committed Mar 18, 2016
1 parent ec8b94f commit bca83bd
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@
* {@link EnableAutoConfiguration Auto-configuration} for H2's web console.
*
* @author Andy Wilkinson
* @author Marten Deinum
* @author Stephane Nicoll
* @since 1.3.0
*/
@Configuration
Expand All @@ -62,8 +64,12 @@ public ServletRegistrationBean h2Console() {
String path = this.properties.getPath();
String urlMapping = (path.endsWith("/") ? path + "*" : path + "/*");
ServletRegistrationBean registration = new ServletRegistrationBean(new WebServlet(), urlMapping);
if (properties.getWebAllowOthers()) {
registration.addInitParameter("webAllowOthers", "true");
H2ConsoleProperties.Settings settings = this.properties.getSettings();
if (settings.isTrace()) {
registration.addInitParameter("trace", "");
}
if (settings.isWebAllowOthers()) {
registration.addInitParameter("webAllowOthers", "");
}
return registration;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2015 the original author or authors.
* Copyright 2012-2016 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.
Expand All @@ -25,6 +25,8 @@
* Configuration properties for H2's console.
*
* @author Andy Wilkinson
* @author Marten Deinum
* @author Stephane Nicoll
* @since 1.3.0
*/
@ConfigurationProperties(prefix = "spring.h2.console")
Expand All @@ -42,10 +44,7 @@ public class H2ConsoleProperties {
*/
private boolean enabled = false;

/**
* Allow remote access.
*/
private boolean webAllowOthers = false;
private final Settings settings = new Settings();

public String getPath() {
return this.path;
Expand All @@ -63,11 +62,37 @@ public void setEnabled(boolean enabled) {
this.enabled = enabled;
}

public boolean getWebAllowOthers() {
return webAllowOthers;
public Settings getSettings() {
return this.settings;
}

public void setWebAllowOthers(boolean webAllowOthers) {
this.webAllowOthers = webAllowOthers;
public static class Settings {

/**
* Enable trace output.
*/
private boolean trace = false;

/**
* Enable remote access.
*/
private boolean webAllowOthers = false;

public boolean isTrace() {
return this.trace;
}

public void setTrace(boolean trace) {
this.trace = trace;
}

public boolean isWebAllowOthers() {
return this.webAllowOthers;
}

public void setWebAllowOthers(boolean webAllowOthers) {
this.webAllowOthers = webAllowOthers;
}

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.boot.test.EnvironmentTestUtils;
import org.springframework.context.annotation.Bean;
import org.springframework.mock.web.MockServletContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

Expand All @@ -35,6 +34,8 @@
* Tests for {@link H2ConsoleAutoConfiguration}
*
* @author Andy Wilkinson
* @author Marten Deinum
* @author Stephane Nicoll
*/
public class H2ConsoleAutoConfigurationTests {

Expand Down Expand Up @@ -71,6 +72,8 @@ public void propertyCanEnableConsole() {
assertThat(this.context.getBeansOfType(ServletRegistrationBean.class)).hasSize(1);
assertThat(this.context.getBean(ServletRegistrationBean.class).getUrlMappings())
.contains("/h2-console/*");
assertThat(this.context.getBean(ServletRegistrationBean.class).getInitParameters()).
doesNotContainKey("trace");
assertThat(this.context.getBean(ServletRegistrationBean.class).getInitParameters()).
doesNotContainKey("webAllowOthers");
}
Expand Down Expand Up @@ -108,17 +111,20 @@ public void customPath() {
}

@Test
public void propertySetsWebAllowOthersInitParameter() {
public void customInitParameters() {
this.context.register(H2ConsoleAutoConfiguration.class);
EnvironmentTestUtils.addEnvironment(this.context,
"spring.h2.console.enabled:true", "spring.h2.console.web-allow-others=true");
"spring.h2.console.enabled:true",
"spring.h2.console.settings.trace=true",
"spring.h2.console.settings.webAllowOthers=true");
this.context.refresh();
assertThat(this.context.getBeansOfType(ServletRegistrationBean.class)).hasSize(1);
assertThat(this.context.getBean(ServletRegistrationBean.class).getUrlMappings())
.contains("/h2-console/*");
assertThat(this.context.getBean(ServletRegistrationBean.class).getInitParameters()).
containsEntry("webAllowOthers", "true");

containsEntry("trace", "");
assertThat(this.context.getBean(ServletRegistrationBean.class).getInitParameters()).
containsEntry("webAllowOthers", "");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -573,6 +573,8 @@ content into your application; rather pick only the properties that you need.
# H2 Web Console ({sc-spring-boot-autoconfigure}/h2/H2ConsoleProperties.{sc-ext}[H2ConsoleProperties])
spring.h2.console.enabled=false # Enable the console.
spring.h2.console.path=/h2-console # Path at which the console will be available.
spring.h2.console.settings.trace=false # Enable trace output.
spring.h2.console.settings.web-allow-others=false # Enable remote access.
# JOOQ ({sc-spring-boot-autoconfigure}/jooq/JooqAutoConfiguration.{sc-ext}[JooqAutoConfiguration])
spring.jooq.sql-dialect= # SQLDialect JOOQ used when communicating with the configured datasource. For instance `POSTGRES`
Expand Down

0 comments on commit bca83bd

Please sign in to comment.