From db76112700c045db4ba516d1f3a47ad7cbfeae0e Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Wed, 30 Aug 2017 15:25:43 +0900 Subject: [PATCH 1/2] Polish See gh-10109 --- .../springframework/boot/actuate/health/Health.java | 2 +- .../jms/activemq/ActiveMQProperties.java | 2 +- .../session/SessionAutoConfigurationJdbcTests.java | 4 ++-- .../asciidoc/appendix-application-properties.adoc | 4 ++-- .../main/java/sample/groovytemplates/Message.java | 2 +- .../src/main/java/sample/web/ui/Message.java | 2 +- .../src/site/apt/examples/exclude-dependency.apt.vm | 2 +- .../boot/diagnostics/AbstractFailureAnalyzer.java | 2 +- .../analyzer/AbstractInjectionFailureAnalyzer.java | 2 +- .../jpa/hibernate/SpringPhysicalNamingStrategy.java | 2 +- .../embedded/jetty/JettyServletWebServerFactory.java | 4 ++-- .../tomcat/TomcatServletWebServerFactory.java | 12 ++++++------ .../filter/ApplicationContextHeaderFilter.java | 2 +- 13 files changed, 21 insertions(+), 21 deletions(-) diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/Health.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/Health.java index 2264e417e1..ab7c9cc5fe 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/Health.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/Health.java @@ -125,7 +125,7 @@ public final class Health { } /** - * Create a new {@link Builder} instance with an {@link Status#DOWN} status an the + * Create a new {@link Builder} instance with an {@link Status#DOWN} status and the * specified exception details. * @param ex the exception * @return a new {@link Builder} instance diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQProperties.java index e98b615754..bced2553a8 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jms/activemq/ActiveMQProperties.java @@ -189,7 +189,7 @@ public class ActiveMQProperties { private int maximumActiveSessionPerConnection = 500; /** - * Reset the connection when a "JMXException" occurs. + * Reset the connection when a "JMSException" occurs. */ private boolean reconnectOnException = true; diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java index ab841872c2..04ca5a0930 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java @@ -76,8 +76,8 @@ public class SessionAutoConfigurationJdbcTests this.context.getBean(JdbcSessionProperties.class).getInitializeSchema()) .isEqualTo(DatabaseInitializationMode.NEVER); this.thrown.expect(BadSqlGrammarException.class); - assertThat(this.context.getBean(JdbcOperations.class) - .queryForList("select * from SPRING_SESSION")).isEmpty(); + this.context.getBean(JdbcOperations.class) + .queryForList("select * from SPRING_SESSION"); } @Test diff --git a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 6aa082364e..76e5a37a23 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -413,7 +413,7 @@ content into your application; rather pick only the properties that you need. spring.resources.chain.strategy.fixed.version= # Version string to use for the Version Strategy. spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ # Locations of static resources. - # SPRING SESSION ({sc-spring-boot-autoconfigure}/session/SessionProperties.{sc-ext}[SessionProperties]) + # SPRING SESSION ({sc-spring-boot-autoconfigure}/session/SessionProperties.{sc-ext}[SessionProperties], {sc-spring-boot-autoconfigure}/session/JdbcSessionProperties.{sc-ext}[JdbcSessionProperties], {sc-spring-boot-autoconfigure}/session/RedisSessionProperties.{sc-ext}[RedisSessionProperties]) spring.session.hazelcast.flush-mode=on-save # Sessions flush mode. spring.session.hazelcast.map-name=spring:session:sessions # Name of the map used to store sessions. spring.session.jdbc.initialize-schema=embedded # Database schema initialization mode. @@ -924,7 +924,7 @@ content into your application; rather pick only the properties that you need. spring.activemq.pool.idle-timeout=30000 # Connection idle timeout in milliseconds. spring.activemq.pool.max-connections=1 # Maximum number of pooled connections. spring.activemq.pool.maximum-active-session-per-connection=500 # Maximum number of active sessions per connection. - spring.activemq.pool.reconnect-on-exception=true # Reset the connection when a "JMXException" occurs. + spring.activemq.pool.reconnect-on-exception=true # Reset the connection when a "JMSException" occurs. spring.activemq.pool.time-between-expiration-check=-1 # Time to sleep, in milliseconds, between runs of the idle connection eviction thread. When negative, no idle connection eviction thread runs. spring.activemq.pool.use-anonymous-producers=true # Use only one anonymous "MessageProducer" instance. Set it to false to create one "MessageProducer" every time one is required. diff --git a/spring-boot-samples/spring-boot-sample-web-groovy-templates/src/main/java/sample/groovytemplates/Message.java b/spring-boot-samples/spring-boot-sample-web-groovy-templates/src/main/java/sample/groovytemplates/Message.java index 62d674330f..76bb0f2e7c 100644 --- a/spring-boot-samples/spring-boot-sample-web-groovy-templates/src/main/java/sample/groovytemplates/Message.java +++ b/spring-boot-samples/spring-boot-sample-web-groovy-templates/src/main/java/sample/groovytemplates/Message.java @@ -24,7 +24,7 @@ public class Message { private Long id; - @NotEmpty(message = "Message is required.") + @NotEmpty(message = "Text is required.") private String text; @NotEmpty(message = "Summary is required.") diff --git a/spring-boot-samples/spring-boot-sample-web-ui/src/main/java/sample/web/ui/Message.java b/spring-boot-samples/spring-boot-sample-web-ui/src/main/java/sample/web/ui/Message.java index 75e7ceb838..5bf0a078fd 100644 --- a/spring-boot-samples/spring-boot-sample-web-ui/src/main/java/sample/web/ui/Message.java +++ b/spring-boot-samples/spring-boot-sample-web-ui/src/main/java/sample/web/ui/Message.java @@ -24,7 +24,7 @@ public class Message { private Long id; - @NotEmpty(message = "Message is required.") + @NotEmpty(message = "Text is required.") private String text; @NotEmpty(message = "Summary is required.") diff --git a/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/exclude-dependency.apt.vm b/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/exclude-dependency.apt.vm index bf58fdbfc4..b3f339449f 100644 --- a/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/exclude-dependency.apt.vm +++ b/spring-boot-tools/spring-boot-maven-plugin/src/site/apt/examples/exclude-dependency.apt.vm @@ -7,7 +7,7 @@ ----- By default, both the <<>> and the <<>> goals will include any <<>> - dependencies that are defined in the project. A boot-based project should consider + dependencies that are defined in the project. A Spring Boot project should consider <<>> dependencies as <> dependencies that are required to run the application. diff --git a/spring-boot/src/main/java/org/springframework/boot/diagnostics/AbstractFailureAnalyzer.java b/spring-boot/src/main/java/org/springframework/boot/diagnostics/AbstractFailureAnalyzer.java index 0be953bfdb..cde8eac682 100644 --- a/spring-boot/src/main/java/org/springframework/boot/diagnostics/AbstractFailureAnalyzer.java +++ b/spring-boot/src/main/java/org/springframework/boot/diagnostics/AbstractFailureAnalyzer.java @@ -39,7 +39,7 @@ public abstract class AbstractFailureAnalyzer } /** - * Returns an analysis of the given {@code failure}, or {@code null} if no analysis + * Returns an analysis of the given {@code rootFailure}, or {@code null} if no analysis * was possible. * @param rootFailure the root failure passed to the analyzer * @param cause the actual found cause diff --git a/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java b/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java index f0ddc236d3..395e81e3e6 100644 --- a/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java +++ b/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java @@ -106,7 +106,7 @@ public abstract class AbstractInjectionFailureAnalyzer } /** - * Returns an analysis of the given {@code failure}, or {@code null} if no analysis + * Returns an analysis of the given {@code rootFailure}, or {@code null} if no analysis * was possible. * @param rootFailure the root failure passed to the analyzer * @param cause the actual found cause diff --git a/spring-boot/src/main/java/org/springframework/boot/orm/jpa/hibernate/SpringPhysicalNamingStrategy.java b/spring-boot/src/main/java/org/springframework/boot/orm/jpa/hibernate/SpringPhysicalNamingStrategy.java index bbbcadc21a..5bc15a5347 100644 --- a/spring-boot/src/main/java/org/springframework/boot/orm/jpa/hibernate/SpringPhysicalNamingStrategy.java +++ b/spring-boot/src/main/java/org/springframework/boot/orm/jpa/hibernate/SpringPhysicalNamingStrategy.java @@ -77,7 +77,7 @@ public class SpringPhysicalNamingStrategy implements PhysicalNamingStrategy { } /** - * Get an the identifier for the specified details. By default this method will return + * Get an identifier for the specified details. By default this method will return * an identifier with the name adapted based on the result of * {@link #isCaseInsensitive(JdbcEnvironment)} * @param name the name of the identifier diff --git a/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java b/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java index 0d7b665776..251c09a7a6 100644 --- a/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java +++ b/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyServletWebServerFactory.java @@ -90,7 +90,7 @@ import org.springframework.util.StringUtils; * Can be initialized using Spring's {@link ServletContextInitializer}s or Jetty * {@link Configuration}s. *

- * Unless explicitly configured otherwise this factory will created servers that listens + * Unless explicitly configured otherwise this factory will create servers that listen * for HTTP requests on port 8080. * * @author Phillip Webb @@ -527,7 +527,7 @@ public class JettyServletWebServerFactory extends AbstractServletWebServerFactor } /** - * Post process the Jetty {@link WebAppContext} before it used with the Jetty Server. + * Post process the Jetty {@link WebAppContext} before it's used with the Jetty Server. * Subclasses can override this method to apply additional processing to the * {@link WebAppContext}. * @param webAppContext the Jetty {@link WebAppContext} diff --git a/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.java b/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.java index d888ab2c33..79c8409329 100644 --- a/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.java +++ b/spring-boot/src/main/java/org/springframework/boot/web/embedded/tomcat/TomcatServletWebServerFactory.java @@ -89,8 +89,8 @@ import org.springframework.util.StringUtils; * {@link TomcatWebServer}s. Can be initialized using Spring's * {@link ServletContextInitializer}s or Tomcat {@link LifecycleListener}s. *

- * Unless explicitly configured otherwise this factory will created containers that - * listens for HTTP requests on port 8080. + * Unless explicitly configured otherwise this factory will create containers that + * listen for HTTP requests on port 8080. * * @author Phillip Webb * @author Dave Syer @@ -508,7 +508,7 @@ public class TomcatServletWebServerFactory extends AbstractServletWebServerFacto } /** - * Post process the Tomcat {@link Context} before it used with the Tomcat Server. + * Post process the Tomcat {@link Context} before it's used with the Tomcat Server. * Subclasses can override this method to apply additional processing to the * {@link Context}. * @param context the Tomcat {@link Context} @@ -591,7 +591,7 @@ public class TomcatServletWebServerFactory extends AbstractServletWebServerFacto /** * Returns a mutable collection of the {@link Valve}s that will be applied to the * Tomcat {@link Engine}. - * @return the engineValves the valves that will be applied + * @return the engine valves that will be applied */ public Collection getEngineValves() { return this.engineValves; @@ -619,7 +619,7 @@ public class TomcatServletWebServerFactory extends AbstractServletWebServerFacto /** * Returns a mutable collection of the {@link Valve}s that will be applied to the * Tomcat {@link Context}. - * @return the contextValves the valves that will be applied + * @return the context valves that will be applied * @see #getEngineValves() */ public Collection getContextValves() { @@ -650,7 +650,7 @@ public class TomcatServletWebServerFactory extends AbstractServletWebServerFacto /** * Returns a mutable collection of the {@link LifecycleListener}s that will be applied * to the Tomcat {@link Context} . - * @return the contextLifecycleListeners the listeners that will be applied + * @return the context lifecycle listeners that will be applied */ public Collection getContextLifecycleListeners() { return this.contextLifecycleListeners; diff --git a/spring-boot/src/main/java/org/springframework/boot/web/servlet/filter/ApplicationContextHeaderFilter.java b/spring-boot/src/main/java/org/springframework/boot/web/servlet/filter/ApplicationContextHeaderFilter.java index 799f60f0f2..61bfd002bf 100644 --- a/spring-boot/src/main/java/org/springframework/boot/web/servlet/filter/ApplicationContextHeaderFilter.java +++ b/spring-boot/src/main/java/org/springframework/boot/web/servlet/filter/ApplicationContextHeaderFilter.java @@ -27,7 +27,7 @@ import org.springframework.context.ApplicationContext; import org.springframework.web.filter.OncePerRequestFilter; /** - * {@link OncePerRequestFilter} to add a {@literal X-Application-Context} header that + * {@link OncePerRequestFilter} to add an {@literal X-Application-Context} header that * contains the {@link ApplicationContext#getId() ApplicationContext ID}. * * @author Phillip Webb From b91ceef621933e97e8c23af640b29e8fecad6219 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Wed, 30 Aug 2017 10:41:51 +0200 Subject: [PATCH 2/2] Polish "Polish" Closes gh-10109 --- .../asciidoc/appendix-application-properties.adoc | 14 ++++++++++---- .../main/java/sample/groovytemplates/Message.java | 2 +- .../src/main/java/sample/web/ui/Message.java | 15 +++++++++------ .../boot/diagnostics/AbstractFailureAnalyzer.java | 4 ++-- .../AbstractInjectionFailureAnalyzer.java | 6 +++--- .../hibernate/SpringPhysicalNamingStrategy.java | 2 +- 6 files changed, 26 insertions(+), 17 deletions(-) diff --git a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 76e5a37a23..cc2446169d 100644 --- a/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -413,17 +413,23 @@ content into your application; rather pick only the properties that you need. spring.resources.chain.strategy.fixed.version= # Version string to use for the Version Strategy. spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/ # Locations of static resources. - # SPRING SESSION ({sc-spring-boot-autoconfigure}/session/SessionProperties.{sc-ext}[SessionProperties], {sc-spring-boot-autoconfigure}/session/JdbcSessionProperties.{sc-ext}[JdbcSessionProperties], {sc-spring-boot-autoconfigure}/session/RedisSessionProperties.{sc-ext}[RedisSessionProperties]) + # SPRING SESSION ({sc-spring-boot-autoconfigure}/session/SessionProperties.{sc-ext}[SessionProperties]) + spring.session.store-type= # Session store type. + spring.session.servlet.filter-order=-2147483598 # Session repository filter order. + spring.session.servlet.filter-dispatcher-types=ASYNC,ERROR,REQUEST # Session repository filter dispatcher types. + + # SPRING SESSION HAZELCAST ({sc-spring-boot-autoconfigure}/session/HazelcastSessionProperties.{sc-ext}[HazelcastSessionProperties]) spring.session.hazelcast.flush-mode=on-save # Sessions flush mode. spring.session.hazelcast.map-name=spring:session:sessions # Name of the map used to store sessions. + + # SPRING SESSION JDBC ({sc-spring-boot-autoconfigure}/session/JdbcSessionProperties.{sc-ext}[JdbcSessionProperties]) spring.session.jdbc.initialize-schema=embedded # Database schema initialization mode. spring.session.jdbc.schema=classpath:org/springframework/session/jdbc/schema-@@platform@@.sql # Path to the SQL file to use to initialize the database schema. spring.session.jdbc.table-name=SPRING_SESSION # Name of database table used to store sessions. + + # SPRING SESSION REDIS ({sc-spring-boot-autoconfigure}/session/RedisSessionProperties.{sc-ext}[RedisSessionProperties]) spring.session.redis.flush-mode=on-save # Sessions flush mode. spring.session.redis.namespace= # Namespace for keys used to store sessions. - spring.session.servlet.filter-order=-2147483598 # Session repository filter order. - spring.session.servlet.filter-dispatcher-types=ASYNC,ERROR,REQUEST # Session repository filter dispatcher types. - spring.session.store-type= # Session store type. # SPRING SOCIAL ({sc-spring-boot-autoconfigure}/social/SocialWebAutoConfiguration.{sc-ext}[SocialWebAutoConfiguration]) spring.social.auto-connection-views=false # Enable the connection status view for supported providers. diff --git a/spring-boot-samples/spring-boot-sample-web-groovy-templates/src/main/java/sample/groovytemplates/Message.java b/spring-boot-samples/spring-boot-sample-web-groovy-templates/src/main/java/sample/groovytemplates/Message.java index 76bb0f2e7c..d73c55ecf7 100644 --- a/spring-boot-samples/spring-boot-sample-web-groovy-templates/src/main/java/sample/groovytemplates/Message.java +++ b/spring-boot-samples/spring-boot-sample-web-groovy-templates/src/main/java/sample/groovytemplates/Message.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2017 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. diff --git a/spring-boot-samples/spring-boot-sample-web-ui/src/main/java/sample/web/ui/Message.java b/spring-boot-samples/spring-boot-sample-web-ui/src/main/java/sample/web/ui/Message.java index 5bf0a078fd..a852007295 100644 --- a/spring-boot-samples/spring-boot-sample-web-ui/src/main/java/sample/web/ui/Message.java +++ b/spring-boot-samples/spring-boot-sample-web-ui/src/main/java/sample/web/ui/Message.java @@ -1,14 +1,17 @@ /* - * Copyright 2012-2015 the original author or authors. + * Copyright 2012-2017 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 + * 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. + * 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 sample.web.ui; diff --git a/spring-boot/src/main/java/org/springframework/boot/diagnostics/AbstractFailureAnalyzer.java b/spring-boot/src/main/java/org/springframework/boot/diagnostics/AbstractFailureAnalyzer.java index cde8eac682..4af8ab8d02 100644 --- a/spring-boot/src/main/java/org/springframework/boot/diagnostics/AbstractFailureAnalyzer.java +++ b/spring-boot/src/main/java/org/springframework/boot/diagnostics/AbstractFailureAnalyzer.java @@ -39,8 +39,8 @@ public abstract class AbstractFailureAnalyzer } /** - * Returns an analysis of the given {@code rootFailure}, or {@code null} if no analysis - * was possible. + * Returns an analysis of the given {@code rootFailure}, or {@code null} if no + * analysis was possible. * @param rootFailure the root failure passed to the analyzer * @param cause the actual found cause * @return the analysis or {@code null} diff --git a/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java b/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java index 395e81e3e6..0d47c11703 100644 --- a/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java +++ b/spring-boot/src/main/java/org/springframework/boot/diagnostics/analyzer/AbstractInjectionFailureAnalyzer.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 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. @@ -106,8 +106,8 @@ public abstract class AbstractInjectionFailureAnalyzer } /** - * Returns an analysis of the given {@code rootFailure}, or {@code null} if no analysis - * was possible. + * Returns an analysis of the given {@code rootFailure}, or {@code null} if no + * analysis was possible. * @param rootFailure the root failure passed to the analyzer * @param cause the actual found cause * @param description the description of the injection point or {@code null} diff --git a/spring-boot/src/main/java/org/springframework/boot/orm/jpa/hibernate/SpringPhysicalNamingStrategy.java b/spring-boot/src/main/java/org/springframework/boot/orm/jpa/hibernate/SpringPhysicalNamingStrategy.java index 5bc15a5347..6fbc54f31f 100644 --- a/spring-boot/src/main/java/org/springframework/boot/orm/jpa/hibernate/SpringPhysicalNamingStrategy.java +++ b/spring-boot/src/main/java/org/springframework/boot/orm/jpa/hibernate/SpringPhysicalNamingStrategy.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2016 the original author or authors. + * Copyright 2012-2017 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.