From 20b5e046ae2648c4c78ca464d7c13f386037a2b7 Mon Sep 17 00:00:00 2001 From: Michael Minella Date: Fri, 22 Jan 2016 10:04:09 -0600 Subject: [PATCH] Initial commit of reference documentation This is the initial cut of the reference documentation for Spring Cloud Task. Resolves spring-cloud/spring-cloud-task#49 Updates per code review use mvnw instead of mvn in example --- pom.xml | 51 +- spring-cloud-task-docs/pom.xml | 300 +++++++++ .../src/main/asciidoc/.gitignore | 2 + .../src/main/asciidoc/Guardfile | 20 + .../appendix-building-the-documentation.adoc | 6 + .../appendix-task-repository-schema.adoc | 11 + .../src/main/asciidoc/appendix.adoc | 6 + .../src/main/asciidoc/features.adoc | 171 +++++ .../src/main/asciidoc/getting-started.adoc | 276 ++++++++ .../src/main/asciidoc/index-docinfo.xml | 14 + .../src/main/asciidoc/index.adoc | 47 ++ .../src/main/asciidoc/preface.adoc | 44 ++ .../src/main/docbook/css/highlight.css | 35 + .../src/main/docbook/css/manual-multipage.css | 9 + .../main/docbook/css/manual-singlepage.css | 6 + .../src/main/docbook/css/manual.css | 344 ++++++++++ .../src/main/docbook/images/background.png | Bin 0 -> 10947 bytes .../src/main/docbook/images/caution.png | Bin 0 -> 2099 bytes .../src/main/docbook/images/important.png | Bin 0 -> 2085 bytes .../src/main/docbook/images/logo.png | Bin 0 -> 46269 bytes .../src/main/docbook/images/note.png | Bin 0 -> 2257 bytes .../src/main/docbook/images/task_schema.png | Bin 0 -> 28683 bytes .../src/main/docbook/images/tip.png | Bin 0 -> 931 bytes .../src/main/docbook/images/warning.png | Bin 0 -> 2130 bytes .../src/main/docbook/xsl/common.xsl | 45 ++ .../src/main/docbook/xsl/epub.xsl | 31 + .../src/main/docbook/xsl/html-multipage.xsl | 73 +++ .../src/main/docbook/xsl/html-singlepage.xsl | 30 + .../src/main/docbook/xsl/html.xsl | 141 +++++ .../src/main/docbook/xsl/pdf.xsl | 582 +++++++++++++++++ .../src/main/docbook/xsl/xslthl-config.xml | 23 + .../main/docbook/xsl/xslthl/asciidoc-hl.xml | 41 ++ .../src/main/docbook/xsl/xslthl/bourne-hl.xml | 95 +++ .../src/main/docbook/xsl/xslthl/c-hl.xml | 117 ++++ .../src/main/docbook/xsl/xslthl/cpp-hl.xml | 151 +++++ .../src/main/docbook/xsl/xslthl/csharp-hl.xml | 194 ++++++ .../src/main/docbook/xsl/xslthl/css-hl.xml | 176 +++++ .../src/main/docbook/xsl/xslthl/html-hl.xml | 122 ++++ .../src/main/docbook/xsl/xslthl/ini-hl.xml | 45 ++ .../src/main/docbook/xsl/xslthl/java-hl.xml | 117 ++++ .../main/docbook/xsl/xslthl/javascript-hl.xml | 147 +++++ .../src/main/docbook/xsl/xslthl/json-hl.xml | 37 ++ .../src/main/docbook/xsl/xslthl/perl-hl.xml | 120 ++++ .../src/main/docbook/xsl/xslthl/php-hl.xml | 154 +++++ .../main/docbook/xsl/xslthl/properties-hl.xml | 38 ++ .../src/main/docbook/xsl/xslthl/python-hl.xml | 100 +++ .../src/main/docbook/xsl/xslthl/ruby-hl.xml | 109 ++++ .../main/docbook/xsl/xslthl/sql2003-hl.xml | 565 +++++++++++++++++ .../src/main/docbook/xsl/xslthl/yaml-hl.xml | 47 ++ .../src/main/javadoc/spring-javadoc.css | 599 ++++++++++++++++++ .../src/main/xslt/dependencyVersions.xsl | 28 + 51 files changed, 5262 insertions(+), 7 deletions(-) create mode 100644 spring-cloud-task-docs/pom.xml create mode 100644 spring-cloud-task-docs/src/main/asciidoc/.gitignore create mode 100644 spring-cloud-task-docs/src/main/asciidoc/Guardfile create mode 100644 spring-cloud-task-docs/src/main/asciidoc/appendix-building-the-documentation.adoc create mode 100644 spring-cloud-task-docs/src/main/asciidoc/appendix-task-repository-schema.adoc create mode 100644 spring-cloud-task-docs/src/main/asciidoc/appendix.adoc create mode 100644 spring-cloud-task-docs/src/main/asciidoc/features.adoc create mode 100644 spring-cloud-task-docs/src/main/asciidoc/getting-started.adoc create mode 100644 spring-cloud-task-docs/src/main/asciidoc/index-docinfo.xml create mode 100644 spring-cloud-task-docs/src/main/asciidoc/index.adoc create mode 100644 spring-cloud-task-docs/src/main/asciidoc/preface.adoc create mode 100644 spring-cloud-task-docs/src/main/docbook/css/highlight.css create mode 100644 spring-cloud-task-docs/src/main/docbook/css/manual-multipage.css create mode 100644 spring-cloud-task-docs/src/main/docbook/css/manual-singlepage.css create mode 100644 spring-cloud-task-docs/src/main/docbook/css/manual.css create mode 100644 spring-cloud-task-docs/src/main/docbook/images/background.png create mode 100644 spring-cloud-task-docs/src/main/docbook/images/caution.png create mode 100644 spring-cloud-task-docs/src/main/docbook/images/important.png create mode 100644 spring-cloud-task-docs/src/main/docbook/images/logo.png create mode 100644 spring-cloud-task-docs/src/main/docbook/images/note.png create mode 100644 spring-cloud-task-docs/src/main/docbook/images/task_schema.png create mode 100644 spring-cloud-task-docs/src/main/docbook/images/tip.png create mode 100644 spring-cloud-task-docs/src/main/docbook/images/warning.png create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/common.xsl create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/epub.xsl create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/html-multipage.xsl create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/html-singlepage.xsl create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/html.xsl create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/pdf.xsl create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl-config.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/asciidoc-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/bourne-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/c-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/cpp-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/csharp-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/css-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/html-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/ini-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/java-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/javascript-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/json-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/perl-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/php-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/properties-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/python-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/ruby-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/sql2003-hl.xml create mode 100644 spring-cloud-task-docs/src/main/docbook/xsl/xslthl/yaml-hl.xml create mode 100644 spring-cloud-task-docs/src/main/javadoc/spring-javadoc.css create mode 100644 spring-cloud-task-docs/src/main/xslt/dependencyVersions.xsl diff --git a/pom.xml b/pom.xml index 7e75be69..0cc369bd 100755 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,50 @@ + 4.0.0 + org.springframework.cloud + spring-cloud-task-parent + 1.0.0.BUILD-SNAPSHOT + pom + Spring Cloud Task Build + Spring Cloud Task Build + https://cloud.spring.io/spring-cloud-task/ + + Pivotal Software, Inc. + https://www.spring.io + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + + + + https://github.com/spring-cloud/spring-cloud-task + + + + mminella + Michael Minella + mminella at pivotal.io + Pivotal Software, Inc. + https://www.spring.io + + Project Lead + + + + cppwfs + Glenn Renfro + grenfro at pivotal.io + Pivotal Software, Inc. + https://www.spring.io + + + + 3.2.1 + @@ -15,18 +58,12 @@ - 4.0.0 - org.springframework.cloud - spring-cloud-task-parent - pom - spring-cloud-task-parent - 1.0.0.BUILD-SNAPSHOT - Spring Cloud Task Parent spring-cloud-task-core spring-cloud-task-samples + spring-cloud-task-docs diff --git a/spring-cloud-task-docs/pom.xml b/spring-cloud-task-docs/pom.xml new file mode 100644 index 00000000..bda88a6b --- /dev/null +++ b/spring-cloud-task-docs/pom.xml @@ -0,0 +1,300 @@ + + + 4.0.0 + + org.springframework.cloud + spring-cloud-task-parent + 1.0.0.BUILD-SNAPSHOT + + spring-cloud-task-docs + Spring Cloud Task Docs + Spring Cloud Task Docs + + ${basedir}/.. + + + + + + full + + + + org.codehaus.mojo + xml-maven-plugin + 1.0 + + + + transform + + + + + + + ${project.build.directory}/external-resources + src/main/xslt/dependencyVersions.xsl + + + .adoc + + + ${project.build.directory}/generated-resources + + + + + + org.asciidoctor + asciidoctor-maven-plugin + 1.5.2 + + + + + org.jruby + jruby-complete + 9.0.0.0 + + + + + generate-docbook + generate-resources + + process-asciidoc + + + index.adoc + docbook5 + book + + true + ${project.version} + ${project.version} + ${spring-boot-repo} + ${spring.version} + ${spring-security.version} + true + ${github-tag} + + + + + + + com.agilejava.docbkx + docbkx-maven-plugin + 2.0.15 + + ${basedir}/target/generated-docs + index.xml + true + false + ${basedir}/src/main/docbook/xsl/pdf.xsl + 1 + 1 + ${basedir}/src/main/docbook/xsl/xslthl-config.xml + + + + net.sf.xslthl + xslthl + 2.1.0 + + + net.sf.docbook + docbook-xml + 5.0-all + resources + zip + runtime + + + + + html-single + + generate-html + + generate-resources + + ${basedir}/src/main/docbook/xsl/html-singlepage.xsl + ${basedir}/target/docbook/htmlsingle + + + + + + + + + + + + + + + + + + + html + + generate-html + + generate-resources + + ${basedir}/src/main/docbook/xsl/html-multipage.xsl + ${basedir}/target/docbook/html + true + + + + + + + + + + + + + + + + + + + pdf + + generate-pdf + + generate-resources + + ${basedir}/src/main/docbook/xsl/pdf.xsl + ${basedir}/target/docbook/pdf + + + + + + + + + + + + epub + + generate-epub3 + + generate-resources + + ${basedir}/src/main/docbook/xsl/epub.xsl + ${basedir}/target/docbook/epub + + + + + + + + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + ant-contrib + ant-contrib + 1.0b3 + + + ant + ant + + + + + org.apache.ant + ant-nodeps + 1.8.1 + + + org.tigris.antelope + antelopetasks + 3.2.10 + + + + + package-and-attach-docs-zip + package + + run + + + + + + + + + + + setup-maven-properties + validate + + run + + + true + + + + + + + + + + + + + + + + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + attach-zip + + attach-artifact + + + + + ${project.build.directory}/${project.artifactId}-${project.version}.zip + zip;zip.type=docs;zip.deployed=false + + + + + + + + + + + diff --git a/spring-cloud-task-docs/src/main/asciidoc/.gitignore b/spring-cloud-task-docs/src/main/asciidoc/.gitignore new file mode 100644 index 00000000..bbc34111 --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/.gitignore @@ -0,0 +1,2 @@ +*.html +*.css diff --git a/spring-cloud-task-docs/src/main/asciidoc/Guardfile b/spring-cloud-task-docs/src/main/asciidoc/Guardfile new file mode 100644 index 00000000..bdd4d729 --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/Guardfile @@ -0,0 +1,20 @@ +require 'asciidoctor' +require 'erb' + +guard 'shell' do + watch(/.*\.adoc$/) {|m| + Asciidoctor.render_file('index.adoc', \ + :in_place => true, \ + :safe => Asciidoctor::SafeMode::UNSAFE, \ + :attributes=> { \ + 'source-highlighter' => 'prettify', \ + 'icons' => 'font', \ + 'linkcss'=> 'true', \ + 'copycss' => 'true', \ + 'doctype' => 'book'}) + } +end + +guard 'livereload' do + watch(%r{^.+\.(css|js|html)$}) +end diff --git a/spring-cloud-task-docs/src/main/asciidoc/appendix-building-the-documentation.adoc b/spring-cloud-task-docs/src/main/asciidoc/appendix-building-the-documentation.adoc new file mode 100644 index 00000000..f7e917e8 --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/appendix-building-the-documentation.adoc @@ -0,0 +1,6 @@ + +[[appendix-building-the-documentation]] +== Building this documentation + +This project uses Maven to generate this documentation. To generate it for yourself, +execute the command: `$ ./mvnw clean package -P full`. diff --git a/spring-cloud-task-docs/src/main/asciidoc/appendix-task-repository-schema.adoc b/spring-cloud-task-docs/src/main/asciidoc/appendix-task-repository-schema.adoc new file mode 100644 index 00000000..550fff10 --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/appendix-task-repository-schema.adoc @@ -0,0 +1,11 @@ + +[[appendix-task-repository-schema]] +== Task repository schema + +[[partintro]] +-- +This appendix provides an ERD for the database schema used in the task repository. +-- + +image::task_schema.png[] + diff --git a/spring-cloud-task-docs/src/main/asciidoc/appendix.adoc b/spring-cloud-task-docs/src/main/asciidoc/appendix.adoc new file mode 100644 index 00000000..34185ba3 --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/appendix.adoc @@ -0,0 +1,6 @@ + +[[appendix]] += Appendices + +include::appendix-task-repository-schema.adoc[] +include::appendix-building-the-documentation.adoc[] diff --git a/spring-cloud-task-docs/src/main/asciidoc/features.adoc b/spring-cloud-task-docs/src/main/asciidoc/features.adoc new file mode 100644 index 00000000..ac77f912 --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/features.adoc @@ -0,0 +1,171 @@ + +[[features]] += Features + +[[partintro]] +-- +This section goes into more detail about Spring Cloud Task. How to use it, how to +configure it, as well as the appropriate extension points are all covered in this section. +-- + +[[features-lifecycle]] +== The lifecycle of a Spring Cloud Task + +In most cases, the modern cloud environment is designed around the execution of processes +that are not expected to end. If they do, they are typically restarted. While most +platforms do have some method to execute a process that isn't restarted when it ends, the + results of that execution are typically not maintained in a consumable way. Spring Cloud + Task brings the ability to execute short lived processes in an environment and record the + results. This allows for a microservices architecture around short lived processes as + well as longer running services. + +While this functionality is useful in a cloud environment, the same issues can arise in a +traditional deployment model as well. When executing Spring Boot applications via a +scheduler like cron, it can be useful to be able to monitor the results of the application +after it's completion. + +A Spring Cloud Task takes the approach that a Spring Boot application can have a start and an +end and still be successful. Batch applications are just one example of where short lived +processes can be helpful. Spring Cloud Task records lifecycle events of a given task. + +The lifecycle consists of a single task execution. This is a physical execution of a +Spring Boot application configured to be a task (annotated with the `@EnableTask` +annotation). + +At the beginning of a task, an entry in the `TaskRepository` is created recording the +start event. This event is triggered via the `ContextRefreshEvent` being triggered by +Spring Framework. + +NOTE: As Spring Cloud Task is expected to consist of a single application context. If +multiple application contexts are used (parent/child relationships for example), the first +`ContextRefreshEvent` that is published by Spring will be recorded as the start of the +task. + +NOTE: The recording of a task will only occur upon the successful bootstrapping of an +`ApplicationContext`. If the context fails to bootstrap at all, the task's execution will +not be recorded. + +Upon completion of all of the `*Runner#run` calls from Spring Boot or the failure of an +`ApplicationContext` (indicated via a `ApplicationFailedEvent`), the task execution is +updated in the repository with the results. + +[[features-task-execution-details]] +=== The TaskExecution + +The information stored in the `TaskRepository` is modeled in the `TaskExecution` class and +consists of the following information: + +|=== +|Field |Description + +|`executionid` +|The unique id for the task's execution. + +|`exitCode` +|The exit code generated from an `ExitCodeExceptionMapper` implementation. If there is no +exit code generated, but an `ApplicationFailedEvent` is thrown, 1 is set. Otherwise, it's +assumed to be 0. + +|`taskName` +|The name for the task as determined by the configured `TaskNameResolver`. + +|`starTime` +|The time the task was started as indicated by the `ContextRefreshEvent`. + +|`endTime` +|The time the task was completed as indicated by the `ContextClosedEvent`. + +|`exitMessage` +|Any information available at the time of exit. If an exception is the cause of the end +of the task (as indicated via an `ApplicationFailedEvent`), the stack trace for that +exception will be stored here. + +|`parameters` +|A `List` of the string parameters as they were passed into the executable boot +application. +|=== + +[[features-lifecycle-exit-codes]] +=== Mapping Exit Codes + +When a task completes, it will want to return an exit code to the OS. If we take a look +at our original example, we can see that we are not controlling that aspect of our +application. So if an exception is thrown, the JVM will return a code that may or may not +be of any use to you in the debugging of that. + +As such, Spring Boot provides an interface, `ExitCodeExceptionMapper` that allows you to +map uncaught exceptions to exit codes. This allows you to be able to indicate at that +level what went wrong. Also, by mapping exit codes in this manor, Spring Cloud Task will +record the exit code returned. + +[[features-configuration]] +== Configuration + +Spring Cloud Task provides an out of the box configuration as defined in the + `DefaultTaskConfigurer` and `SimpleTaskConfiguration`. This section will walk through +the defaults as well as how to customize Spring Cloud Task for your needs + +[[features-data-source]] +=== DataSource + +Spring Cloud Task utilizes a datasource for storing the results of task executions. By +default, we provide an in memory instance of H2 to provide a simple method of +bootstrapping development. However, in a production environment, you'll want to configure +your own `DataSource`. + +If your application utilizes only a single `DataSource` and that will serve as both your +business schema as well as the task repository, all you need to do is provide any +`DataSource` (via Spring Boot's configuration conventions is the easiest way). This will +be automatically used by Spring Cloud Task for the repository. + +If your application utilizes more than one `DataSource`, you'll need to configure the +task repository with the appropriate `DataSource`. This customization can be done via an +implementation of the `TaskConfigurer`. + +[[features-task-configurer]] +=== TaskConfigurer + +The `TaskConfigurer` is a strategy interface allowing for users to customize the way +components of Spring Cloud Task are configured. By default, we provide the +`DefaultTaskConfigurer` that provides logical defaults (`Map` based in memory components +useful for development if no `DataSource` is provided and JDBC based components if there +is a `DataSource` available. + +The `TaskConfigurer` allows the configuration of three main components: + +|=== +|Component |Description |Default (provided by `DefaultTaskConfigurer`) + +|`TaskRepository` +|The implementation of the `TaskRepository` to be used. +|`SimpleTaskRepository` + +|`TaskExplorer` +|The implementation of the `TaskExplorer` (a component for read only access to the task +repository) to be used. +|`SimpleTaskExplorer` + +|`PlatformTransactionManager` +|A transaction manager to be used when executing updates for tasks. +|`DataSourceTransactionManager` if a `DataSource` is used, +`ResourcelessTransactionManager` if it is not. +|=== + +[[features-task-name]] +=== Task Name + +In most cases, the name of the task will be the application name as configured via Spring +Boot. However, there are some cases, where you may want to map the run of a task to a +different name. Spring Data Flow is an example of this (where you want the task to be run +with the name of the task definition). Because of this, we offer the ability to customize +how the task is named via the `TaskNameResolver` interface. + +By default, Spring Cloud Task provides the `SimpleTaskNameResolver` which will use the +following options (in order of precedence): + +. A Spring Boot property (configured any of the ways Spring Boot allows) +`spring.cloud.task.name`. +. The application name as resolved using Spring Boot's rules (obtained via +`ApplicationContext#getId`). + + diff --git a/spring-cloud-task-docs/src/main/asciidoc/getting-started.adoc b/spring-cloud-task-docs/src/main/asciidoc/getting-started.adoc new file mode 100644 index 00000000..3392df6e --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/getting-started.adoc @@ -0,0 +1,276 @@ + +[[getting-started]] += Getting started + +[[partintro]] +-- +If you're just getting started with Spring Cloud Task, this is the section +for you! Here we answer the basic "`what?`", "`how?`" and "`why?`" questions. You'll +find a gentle introduction to Spring Cloud Task. We'll then build our first Spring Cloud +Task application, discussing some core principles as we go. +-- + +[[getting-started-introducing-spring-cloud-task]] +== Introducing Spring Cloud Task + +Spring Cloud Task makes it easy to create short lived microservices. We provide +capabilities that allow short lived JVM processes to be executed on demand in a production +environment. + +[[getting-started-system-requirements]] +== System Requirements + +You need Java installed (Java 7 or better, we recommend Java 8) and to build you need to have Maven installed as well. + +=== Database Requirements + +Spring Cloud Task uses a relational database to store the results of an executed task. +While you can begin developing a task without a database (the status of the task is logged + as part of the task repository's updates), for production environments, you'll want to +utilize a supported database. Below is a list of the ones currently supported: + +- H2 +- HSQLDB +- MySql +- Oracle +- Postgres + +[[getting-started-developing-first-task]] +== Developing your first Spring Cloud Task application + +A good place to start is with a simple "Hello World!" application so we'll create the +Spring Cloud Task equivalent to highlight the features of the framework. We'll use Apache +Maven as a build tool for this project since most IDEs have good support for it. + +NOTE: The spring.io web site contains many “Getting Started” guides that use Spring Boot. +If you’re looking to solve a specific problem; check there first. You can shortcut the +steps below by going to start.spring.io and creating a new project. This will +automatically generate a new project structure so that you can start coding right the way. +Check the documentation for more details. + +Before we begin, open a terminal to check that you have valid versions of Java and Maven +installed. + +[source] +$ java -version +java version "1.8.0_31" +Java(TM) SE Runtime Environment (build 1.8.0_31-b13) +Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode) + +[source] +$ mvn -v +Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T15:58:10-05:00) +Maven home: /usr/local/Cellar/maven/3.2.3/libexec +Java version: 1.8.0_31, vendor: Oracle Corporation + +NOTE: This sample needs to be created in its own folder. Subsequent instructions assume +you have created a suitable folder and that it is your "current directory". + +[[getting-started-creating-the-pom]] +=== Creating the POM + +We need to start by creating a Maven `pom.xml` file. The `pom.xml` is the recipe that +will be used to build your project. Open your favorite text editor and add the following: + +[code,xml] +---- + + + + 4.0.0 + + com.example + myproject + jar + 0.0.1-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 1.3.2.RELEASE + + + + com.example.SampleTask + + + + + org.springframework.boot + spring-boot-starter + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + +---- + +This should give you a working build. You can test it out by running `mvn package` (you +can ignore the "jar will be empty - no content was marked for inclusion!" warning for +now). + +NOTE: At this point you could import the project into an IDE (most modern Java IDE's +include built-in support for Maven). For simplicity we will continue to use a plain text +editor for this example. + +[[getting-started-adding-classpath-dependencies]] +=== Adding classpath dependencies + +A Spring Cloud Task is made up of a Spring Boot application that is expected to end. In +our POM above, we created the shell of a Spring Boot application from a dependency +perspective by setting our parent to use the `spring-boot-starter-parent`. + +Spring Boot provides a number of additional "Starter POMs". Some of which are appropriate +for use within tasks (`spring-boot-starter-batch`, `spring-boot-starter-jdbc`, etc) and +some may not be ('spring-boot-starter-web` is probably not going to be used in a task). +The indicator of if a starter makes sense or not comes down to if the resulting +application will end (batch based applications typically end, the +`spring-boot-starter-web` dependency bootstraps a servlet container which probably wont'). + +For this example, we'll only need to add a single additional dependency, the one for +Spring Cloud Task itself: + +[source,xml] + + org.springframework.cloud + spring-cloud-task-core + 1.0.0.BUILD-SNAPSHOT + + +[[getting-started-writing-the-code]] +=== Writing the code + +To finish our application, we need to create a single Java file. Maven will compile the +sources from `src/main/java` by default so you need to create that folder structure. Then +add a file named `src/main/java/com/example/SampleTask.java`: + +[source,java] +---- +package com.example; + +import org.springframework.boot.*; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.task.configuration.EnableTask; +import org.springframework.context.annotation.Bean; + +@SpringBootApplication +@EnableTask +public class SampleTask { + + @Bean + public CommandLineRunner commandLineRunner() { + return new HelloWorldCommandLineRunner(); + } + + public static void main(String[] args) { + SpringApplication.run(SampleTask.class, args); + } + + public static class HelloWorldCommandLineRunner implements CommandLineRunner { + + @Override + public void run(String... strings) throws Exception { + System.out.println("Hello World!"); + } + } +} +---- + +While it may not look like much, quite a bit is going on. To read more about the Spring +Boot specifics, take a look at their reference documentation here: +http://docs.spring.io/spring-boot/docs/current/reference/html/[http://docs.spring.io/spring-boot/docs/current/reference/html/] + +[[getting-started-at-task]] +==== The @EnableTask annotation + +The first non boot annotation in our example is the `@EnableTask` annotation. This class +level annotation tells Spring Cloud Task to bootstrap it's functionality. This occurs by +importing an additional configuration class, `SimpleTaskConfiguration` by default. This +additional configuration registers the `TaskRepository` and the infrastructure for its +use. + +Out of the box, the `TaskRepository` will use an in memory `Map` to record the results +of a task. Obviously this isn't a practical solution for a production environment since +the `Map` goes away once the task ends. However, for a quick getting started +experience we use this as a default as well as echoing to the logs what is being updated +in that repository. Later in this documentation we'll cover how to customize the +configuration of the pieces provided by Spring Cloud Task. + +When our sample application is run, Spring Boot will launch our +`HelloWorldCommandLineRunner` outputting our "Hello World!" message to standard out. The +`TaskLifecyceListener` will record the start of the task and the end of the task in the +repository. + +[[getting-started-main-method]] +==== The main method + +The main method serves as the entry point to any java application. Our main method +delegates to Spring Boot's `SpringApplication` class. You can read more about it in the +Spring Boot documentation. + +[[getting-started-clr]] +==== The CommandLineRunner + +In Spring, there are many ways to bootstrap an application's logic. Spring Boot provides +a convenient method of doing so in an organized manor via their `*Runner` interfaces +(`CommandLineRunner` or `ApplicationRunner`). A well behaved task will bootstrap any +logic via one of these two runners. + +The lifecycle of a task is considered from before the `*Runner#run` methods are executed +to once they are all complete. Spring Boot allows an application to use multiple +`*Runner` implementation and Spring Cloud Task doesn't attempt to impede on this convention. + +NOTE: Any processing bootstrapped from mechanisms other than a `CommandLineRunner` or +`ApplicationRunner` (using `InitializingBean#afterPropertiesSet` for example) will not be + recorded by Spring Cloud Task. + +[[getting-started-running-the-example]] +=== Running the example + +At this point, your application should work. Since this application is Spring Boot based, + we can run it from the command line via the command `$ mvn spring-boot:run` from the root + of our applicaiton: + +[source] +---- +$ mvn clean spring-boot:run +....... . . . +....... . . . (Maven log output here) +....... . . . + + + . ____ _ __ _ _ + /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ +( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ + \\/ ___)| |_)| | | | | || (_| | ) ) ) ) + ' |____| .__|_| |_|_| |_\__, | / / / / + =========|_|==============|___/=/_/_/_/ + :: Spring Boot :: (v1.3.2.RELEASE) + +2016-01-25 11:08:10.183 INFO 12943 --- [ main] com.example.SampleTask : Starting SampleTask on Michaels-MacBook-Pro-2.local with PID 12943 (/Users/mminella/Documents/IntelliJWorkspace/spring-cloud-task-example/target/classes started by mminella in /Users/mminella/Documents/IntelliJWorkspace/spring-cloud-task-example) +2016-01-25 11:08:10.185 INFO 12943 --- [ main] com.example.SampleTask : No active profile set, falling back to default profiles: default +2016-01-25 11:08:10.226 INFO 12943 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@2a2c3676: startup date [Mon Jan 25 11:08:10 CST 2016]; root of context hierarchy +2016-01-25 11:08:11.051 INFO 12943 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup +2016-01-25 11:08:11.065 INFO 12943 --- [ main] o.s.c.t.r.support.SimpleTaskRepository : Creating: TaskExecution{executionId=0, externalExecutionID='null', exitCode=0, taskName='application', startTime=Mon Jan 25 11:08:11 CST 2016, endTime=null, statusCode='null', exitMessage='null', parameters=[]} +Hello World! +2016-01-25 11:08:11.071 INFO 12943 --- [ main] com.example.SampleTask : Started SampleTask in 1.095 seconds (JVM running for 3.826) +2016-01-25 11:08:11.220 INFO 12943 --- [ Thread-1] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@2a2c3676: startup date [Mon Jan 25 11:08:10 CST 2016]; root of context hierarchy +2016-01-25 11:08:11.222 INFO 12943 --- [ Thread-1] o.s.c.t.r.support.SimpleTaskRepository : Updating: TaskExecution{executionId=0, externalExecutionID='null', exitCode=0, taskName='application', startTime=Mon Jan 25 11:08:11 CST 2016, endTime=Mon Jan 25 11:08:11 CST 2016, statusCode='null', exitMessage='null', parameters=[]} +2016-01-25 11:08:11.222 INFO 12943 --- [ Thread-1] o.s.j.e.a.AnnotationMBeanExporter : Unregistering JMX-exposed beans on shutdown +---- + +If you notice, there are three lines of interest in the above output: + +* `SimpleTaskRepository` logged out the creation of the entry in the `TaskRepository`. +* The execution of our `CommandLineRunner`, demonstrated by the "Helo World!" output. +* `SimpleTaskREpository` logging the completion of the task in the `TaskRepository`. + diff --git a/spring-cloud-task-docs/src/main/asciidoc/index-docinfo.xml b/spring-cloud-task-docs/src/main/asciidoc/index-docinfo.xml new file mode 100644 index 00000000..8188ce41 --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/index-docinfo.xml @@ -0,0 +1,14 @@ +Spring Cloud Task +{spring-boot-version} + + 2015-2016 + Pivotal Software, Inc. + + + + Copies of this document may be made for your own use and for distribution to + others, provided that you do not charge any fee for such copies and further + provided that each copy contains this Copyright Notice, whether distributed in + print or electronically. + + diff --git a/spring-cloud-task-docs/src/main/asciidoc/index.adoc b/spring-cloud-task-docs/src/main/asciidoc/index.adoc new file mode 100644 index 00000000..4bad9751 --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/index.adoc @@ -0,0 +1,47 @@ += Spring Cloud Task Reference Guide +Michael Minella, Glenn Renfro +:doctype: book +:toc: +:toclevels: 4 +:source-highlighter: prettify +:numbered: +:icons: font +:hide-uri-scheme: +:spring-cloud-task-repo: snapshot +:github-tag: master +:spring-cloud-task-docs-version: current +:spring-cloud-task-docs: http://docs.spring.io/spring-cloud-task/docs/{version}/reference +:spring-cloud-task-docs-current: http://docs.spring.io/spring-cloud-task/docs/current-SNAPSHOT/reference/html/ +:github-repo: spring-cloud/spring-cloud-task +:github-raw: http://raw.github.com/{github-repo}/{github-tag} +:github-code: http://github.com/{github-repo}/tree/{github-tag} +:github-wiki: http://github.com/{github-repo}/wiki +:github-master-code: http://github.com/{github-repo}/tree/master +:sc-ext: java +:sc-spring-boot: {github-code}/spring-boot/src/main/java/org/springframework/boot +:dc-ext: html +:dc-root: http://docs.spring.io/spring-cloud-task/docs/{spring-cloud-dataflow-docs-version}/api +:dc-spring-boot: {dc-root}/org/springframework/boot +:dependency-management-plugin: https://github.com/spring-gradle-plugins/dependency-management-plugin +:dependency-management-plugin-documentation: {dependency-management-plugin}/blob/master/README.md +:spring-boot-maven-plugin-site: http://docs.spring.io/spring-boot/docs/{spring-boot-docs-version}/maven-plugin +:spring-reference: http://docs.spring.io/spring/docs/{spring-docs-version}/spring-framework-reference/htmlsingle +:spring-security-reference: http://docs.spring.io/spring-security/site/docs/{spring-security-docs-version}/reference/htmlsingle +:spring-javadoc: http://docs.spring.io/spring/docs/{spring-docs-version}/javadoc-api/org/springframework +:spring-amqp-javadoc: http://docs.spring.io/spring-amqp/docs/current/api/org/springframework/amqp +:spring-data-javadoc: http://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa +:spring-data-commons-javadoc: http://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data +:spring-data-mongo-javadoc: http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb +:spring-data-rest-javadoc: http://docs.spring.io/spring-data/rest/docs/current/api/org/springframework/data/rest +:gradle-userguide: http://www.gradle.org/docs/current/userguide +:propdeps-plugin: https://github.com/spring-projects/gradle-plugins/tree/master/propdeps-plugin +:ant-manual: http://ant.apache.org/manual +:attributes: allow-uri-read +// ====================================================================================== + +include::preface.adoc[] +include::getting-started.adoc[] +include::features.adoc[] +include::appendix.adoc[] + +// ====================================================================================== diff --git a/spring-cloud-task-docs/src/main/asciidoc/preface.adoc b/spring-cloud-task-docs/src/main/asciidoc/preface.adoc new file mode 100644 index 00000000..7121f20b --- /dev/null +++ b/spring-cloud-task-docs/src/main/asciidoc/preface.adoc @@ -0,0 +1,44 @@ +[[preface]] += Preface + +[[task-documentation-about]] + +This section provides a brief overview of the Spring Cloud Task reference documentation. +Think of it as a map for the rest of the document. You can read this reference guide in a +linear fashion, or you can skip sections if something doesn't interest you. + +== About the documentation +The Spring Cloud Task reference guide is available as {spring-cloud-task-docs}/html[html], +{spring-cloud-task-docs}/pdf/spring-cloud-task-reference.pdf[pdf] +and {spring-cloud-task-docs}/epub/spring-cloud-task-reference.epub[epub] documents. The latest copy +is available at {spring-cloud-task-docs-current}. + +Copies of this document may be made for your own use and for +distribution to others, provided that you do not charge any fee for such copies and +further provided that each copy contains this Copyright Notice, whether distributed in +print or electronically. + +[[task-documentation-getting-help]] +== Getting help +Having trouble with Spring Cloud Task, We'd like to help! + +* Ask a question - we monitor http://stackoverflow.com[stackoverflow.com] for questions + tagged with http://stackoverflow.com/tags/spring-cloud[`spring-cloud`]. +* Report bugs with Spring Cloud Task at https://github.com/spring-cloud/spring-cloud-task/issues. + +NOTE: All of Spring Cloud Task is open source, including the documentation! If you find problems +with the docs; or if you just want to improve them, please {github-code}[get involved]. + +[[task-documentation-first-steps]] +== First Steps +If you're just getting started with Spring Cloud Task, or 'Spring' in general, +<> + +* *From scratch:* + <> | + <> +* *Tutorial:* + <> +* *Running your example:* + <> + diff --git a/spring-cloud-task-docs/src/main/docbook/css/highlight.css b/spring-cloud-task-docs/src/main/docbook/css/highlight.css new file mode 100644 index 00000000..ffefef72 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/css/highlight.css @@ -0,0 +1,35 @@ +/* + code highlight CSS resemblign the Eclipse IDE default color schema + @author Costin Leau +*/ + +.hl-keyword { + color: #7F0055; + font-weight: bold; +} + +.hl-comment { + color: #3F5F5F; + font-style: italic; +} + +.hl-multiline-comment { + color: #3F5FBF; + font-style: italic; +} + +.hl-tag { + color: #3F7F7F; +} + +.hl-attribute { + color: #7F007F; +} + +.hl-value { + color: #2A00FF; +} + +.hl-string { + color: #2A00FF; +} \ No newline at end of file diff --git a/spring-cloud-task-docs/src/main/docbook/css/manual-multipage.css b/spring-cloud-task-docs/src/main/docbook/css/manual-multipage.css new file mode 100644 index 00000000..0c484531 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/css/manual-multipage.css @@ -0,0 +1,9 @@ +@IMPORT url("manual.css"); + +body.firstpage { + background: url("../images/background.png") no-repeat center top; +} + +div.part h1 { + border-top: none; +} diff --git a/spring-cloud-task-docs/src/main/docbook/css/manual-singlepage.css b/spring-cloud-task-docs/src/main/docbook/css/manual-singlepage.css new file mode 100644 index 00000000..4a7fd140 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/css/manual-singlepage.css @@ -0,0 +1,6 @@ +@IMPORT url("manual.css"); + +body { + background: url("../images/background.png") no-repeat center top; +} + diff --git a/spring-cloud-task-docs/src/main/docbook/css/manual.css b/spring-cloud-task-docs/src/main/docbook/css/manual.css new file mode 100644 index 00000000..0ecbe2e8 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/css/manual.css @@ -0,0 +1,344 @@ +@IMPORT url("highlight.css"); + +html { + padding: 0pt; + margin: 0pt; +} + +body { + color: #333333; + margin: 15px 30px; + font-family: Helvetica, Arial, Freesans, Clean, Sans-serif; + line-height: 1.6; + -webkit-font-smoothing: antialiased; +} + +code { + font-size: 16px; + font-family: Consolas, "Liberation Mono", Courier, monospace; +} + +:not(a)>code { + color: #6D180B; +} + +:not(pre)>code { + background-color: #F2F2F2; + border: 1px solid #CCCCCC; + border-radius: 4px; + padding: 1px 3px 0; + text-shadow: none; + white-space: nowrap; +} + +body>*:first-child { + margin-top: 0 !important; +} + +div { + margin: 0pt; +} + +hr { + border: 1px solid #CCCCCC; + background: #CCCCCC; +} + +h1,h2,h3,h4,h5,h6 { + color: #000000; + cursor: text; + font-weight: bold; + margin: 30px 0 10px; + padding: 0; +} + +h1,h2,h3 { + margin: 40px 0 10px; +} + +h1 { + margin: 70px 0 30px; + padding-top: 20px; +} + +div.part h1 { + border-top: 1px dotted #CCCCCC; +} + +h1,h1 code { + font-size: 32px; +} + +h2,h2 code { + font-size: 24px; +} + +h3,h3 code { + font-size: 20px; +} + +h4,h1 code,h5,h5 code,h6,h6 code { + font-size: 18px; +} + +div.book,div.chapter,div.appendix,div.part,div.preface { + min-width: 300px; + max-width: 1200px; + margin: 0 auto; +} + +p.releaseinfo { + font-weight: bold; + margin-bottom: 40px; + margin-top: 40px; +} + +div.authorgroup { + line-height: 1; +} + +p.copyright { + line-height: 1; + margin-bottom: -5px; +} + +.legalnotice p { + font-style: italic; + font-size: 14px; + line-height: 1; +} + +div.titlepage+p,div.titlepage+p { + margin-top: 0; +} + +pre { + line-height: 1.0; + color: black; +} + +a { + color: #4183C4; + text-decoration: none; +} + +p { + margin: 15px 0; + text-align: left; +} + +ul,ol { + padding-left: 30px; +} + +li p { + margin: 0; +} + +div.table { + margin: 1em; + padding: 0.5em; + text-align: center; +} + +div.table table,div.informaltable table { + display: table; + width: 100%; +} + +div.table td { + padding-left: 7px; + padding-right: 7px; +} + +.sidebar { + line-height: 1.4; + padding: 0 20px; + background-color: #F8F8F8; + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; +} + +.sidebar p.title { + color: #6D180B; +} + +pre.programlisting,pre.screen { + font-size: 15px; + padding: 6px 10px; + background-color: #F8F8F8; + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; + clear: both; + overflow: auto; + line-height: 1.4; + font-family: Consolas, "Liberation Mono", Courier, monospace; +} + +table { + border-collapse: collapse; + border-spacing: 0; + border: 1px solid #DDDDDD !important; + border-radius: 4px !important; + border-collapse: separate !important; + line-height: 1.6; +} + +table thead { + background: #F5F5F5; +} + +table tr { + border: none; + border-bottom: none; +} + +table th { + font-weight: bold; +} + +table th,table td { + border: none !important; + padding: 6px 13px; +} + +table tr:nth-child(2n) { + background-color: #F8F8F8; +} + +td p { + margin: 0 0 15px 0; +} + +div.table-contents td p { + margin: 0; +} + +div.important *,div.note *,div.tip *,div.warning *,div.navheader *,div.navfooter *,div.calloutlist * + { + border: none !important; + background: none !important; + margin: 0; +} + +div.important p,div.note p,div.tip p,div.warning p { + color: #6F6F6F; + line-height: 1.6; +} + +div.important code,div.note code,div.tip code,div.warning code { + background-color: #F2F2F2 !important; + border: 1px solid #CCCCCC !important; + border-radius: 4px !important; + padding: 1px 3px 0 !important; + text-shadow: none !important; + white-space: nowrap !important; +} + +.note th,.tip th,.warning th { + display: none; +} + +.note tr:first-child td,.tip tr:first-child td,.warning tr:first-child td + { + border-right: 1px solid #CCCCCC !important; + padding-top: 10px; +} + +div.calloutlist p,div.calloutlist td { + padding: 0; + margin: 0; +} + +div.calloutlist>table>tbody>tr>td:first-child { + padding-left: 10px; + width: 30px !important; +} + +div.important,div.note,div.tip,div.warning { + margin-left: 0px !important; + margin-right: 20px !important; + margin-top: 20px; + margin-bottom: 20px; + padding-top: 10px; + padding-bottom: 10px; +} + +div.toc { + line-height: 1.2; +} + +dl,dt { + margin-top: 1px; + margin-bottom: 0; +} + +div.toc>dl>dt { + font-size: 32px; + font-weight: bold; + margin: 30px 0 10px 0; + display: block; +} + +div.toc>dl>dd>dl>dt { + font-size: 24px; + font-weight: bold; + margin: 20px 0 10px 0; + display: block; +} + +div.toc>dl>dd>dl>dd>dl>dt { + font-weight: bold; + font-size: 20px; + margin: 10px 0 0 0; +} + +tbody.footnotes * { + border: none !important; +} + +div.footnote p { + margin: 0; + line-height: 1; +} + +div.footnote p sup { + margin-right: 6px; + vertical-align: middle; +} + +div.navheader { + border-bottom: 1px solid #CCCCCC; +} + +div.navfooter { + border-top: 1px solid #CCCCCC; +} + +.title { + margin-left: -1em; + padding-left: 1em; +} + +.title>a { + position: absolute; + visibility: hidden; + display: block; + font-size: 0.85em; + margin-top: 0.05em; + margin-left: -1em; + vertical-align: text-top; + color: black; +} + +.title>a:before { + content: "\00A7"; +} + +.title:hover>a,.title>a:hover,.title:hover>a:hover { + visibility: visible; +} + +.title:focus>a,.title>a:focus,.title:focus>a:focus { + outline: 0; +} diff --git a/spring-cloud-task-docs/src/main/docbook/images/background.png b/spring-cloud-task-docs/src/main/docbook/images/background.png new file mode 100644 index 0000000000000000000000000000000000000000..d4195e5b32cd5f878652c5195bd674a5a6304855 GIT binary patch literal 10947 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 literal 0 HcmV?d00001 diff --git a/spring-cloud-task-docs/src/main/docbook/images/caution.png b/spring-cloud-task-docs/src/main/docbook/images/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..8a5e4fca039d0247dcf55ae0e719cdb457509422 GIT binary patch literal 2099 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 literal 0 HcmV?d00001 diff --git a/spring-cloud-task-docs/src/main/docbook/images/logo.png b/spring-cloud-task-docs/src/main/docbook/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..45f1978f3fde3661dc2d4131c7faa0c120188c5d GIT binary patch literal 46269 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%0ArS<p+tPz$YS|THxa0u-ohR#2Mkj!=(ogswU!H> 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 literal 0 HcmV?d00001 diff --git a/spring-cloud-task-docs/src/main/docbook/images/note.png b/spring-cloud-task-docs/src/main/docbook/images/note.png new file mode 100644 index 0000000000000000000000000000000000000000..88d997b17cfe703280d3a33e3f7c285a4ce6c8a6 GIT binary patch literal 2257 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 DX)Vja literal 0 HcmV?d00001 diff --git a/spring-cloud-task-docs/src/main/docbook/images/tip.png b/spring-cloud-task-docs/src/main/docbook/images/tip.png new file mode 100644 index 0000000000000000000000000000000000000000..6530abb4b5a5d68e3b1c98de512d264c1f8ba883 GIT binary patch literal 931 zcmV;U16=%xP)bSEogsT%F|x0xuT7xdRv7>Rev?4wv{qrDN}+xS$8V5!!ga&#Y1*BgqL?&c}jPc zG_JlfMSD5I%DQQcHXTbGWQtKpeL6yAB|UI5CQ=~#`}=c}Um;E%R)9u^qI0>&GHQ-g zOm;DCkym+{WF$}@UWrV1mtnTPtu!WtY$r7BOpo|N_#mqWGhK#KR0MD7eW*yPaY&xBTRfcG-E5p&`2dq z875XFdy+3GStd(wD_Mg`dys8Xd_houJju_&*4)mZt2Tk1H)DTRJY^_lf>>*ZU2Th5 zWQ3Ly{;kf91GM2s4Vfv8a-fcsXpb+4t> zmM%11X*>M&PQZNVdARf4d*2x!aq1>jOzQ?>>R)(Ok;sOJ)7jfk$Fdif23? z-}3V78&9qod*O;uGk%fEW^;|k`Lo>bOq2iF72o-IGb2gTw+4B~#iYz(oL}sS7|$R2 zDGfrR{|@~AQJ&v(#4u|ZtJP}t520N48P!$8U;|Vfuq=8>E$w`o2Jf`%eqhqbr%IH1zV?O3uDWqKZId-wMQ*MFefpD5X*w@ zok{kNA?%%$F{M!OUcE^^x{~(wkHK|_*9Yg`KNS88FaVH_sda1Xfs6nE002ovPDHLk FV1jwin)(0$ literal 0 HcmV?d00001 diff --git a/spring-cloud-task-docs/src/main/docbook/images/warning.png b/spring-cloud-task-docs/src/main/docbook/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..0d5b5244605adbb7ab05a1549746a9c35490f95b GIT binary patch literal 2130 zcmbVNYg7|w8V(4q($)50y>JmGlLW#g$xLn}Vd2Si)}#|ptPAQp3Bp-3!-lL0;i^LY?;i#f0m5s49g z3h?3rDQg~EDPlm?FKkgKIcWEK-3X6YU0uzs7H|nq84s39r2!5;pF?SI$QqXy^Ko1x zV~zpENvp@<_Bsd`5MabC#3rvCq&$5dg43yGR zAdy0-rWjC#a1N_+kzUMY#pmogD7!DP(9dEKr3c5ngvUq_6>}Y+w-a81v=eSXnIi_+ zI?U>D1q2C!0zHox#XXKH+@|&rPT*OF5yvY$5J|)WwLqnU)c-5;=UChSlQkaY3@^|g z|J5#YBB}=i+n3Ex9bS$P?xJSKLk)-HHII@;3qG#TG^!+aj>0QkO~7kB0+|yM;YrGB zF>Ge@isQ#73%Tp#k_(tInh3U$uJWY-+DND*o}L-CB5g@#9YWWw~pxZ!Obm>yN#ZHFvL0zA3vNCTJ=t?)~`2O1M{L6un=ml<2x zQEYfifmA?Pz0tqRs^2Utt1pU0BQB1eIY0U_I}c1Y#PP7Ci5s7#IJn}xK{G+{_v^Z+1V#$Erodv>d}ew>RP0wzw+GWkGCBlS1Oj5Z!5NK zUuSR6>pa}RSEZ;qE_w1l#`hQX4E67U6NeP zHZ`T&wj0_H)t|Y1thUqnhub?%e)Y07;a^Tq%FO&iQkR&`qG!dh*2WfW(HuRQj*_DI zeCD1bUA|tMwjOb8E|FRIn$pzEU!2j_N}1Z2ig)vbr5xA0rjC70cmI6*%Uf->hWzaZ z{33HABO5q)vRhzDly2l691@+q3O{}NbSzx+I*k@|L4&3leK#$>u+T#TvTELfKb|IH zc23atf3vmfCa0&TWY@iuoA_Pm<0~ttEC*ut`isb^jXS>X^Sp=l?RXN_OJ*&usGXg$ zTlTv;Ch^vhLDf&+62jl64*&D+=+`sN_dap_1W%p|KQVYIdgPL5uRE9(c4On)DXndL zLNq?%!-u*zmMxyYc4m4Nr>>=A=s}PkJkqr&E^b9>5g+}c1%X}3|WKcg&spcJQ)05zI<<5LTBhNKRg$XRTi2{j)yl_ zj4~kKOvr+m(;vw~9zVh(zC-y9jqQnguz5r7FRq^MyKuXAENp(TAzUVtg&Ts+B_s7) zGn+fN0sG>9GjsPLKTRrvCd`71IZulJ1_1jO9KWbD&_@2UC+LTNpxxrdz#E|j|2nA9 zzB!UTyfAEJ&#%$pQ>QX#8vk@_a5iqukMF;8`wRKe{BI}5$H%OROs4J1#j)|?p|YSh z_SpR^e`VE#F52;WL{!+L(yZLRh40*KS;@box;9(-tE)`mcVp27O*>Z{_Lb*5T3cJA yr~0nPHtg2+UHi&&$8ha;`+hiaUmw&!n@8(?5PqF(KE5>Ym)EG)p&uyBP5%a8^# + + + + + + + 1 + 0 + 1 + + + + images/ + .png + + + book toc,title + 3 + + + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/epub.xsl b/spring-cloud-task-docs/src/main/docbook/xsl/epub.xsl new file mode 100644 index 00000000..031406ca --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/epub.xsl @@ -0,0 +1,31 @@ + + + + + + + + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/html-multipage.xsl b/spring-cloud-task-docs/src/main/docbook/xsl/html-multipage.xsl new file mode 100644 index 00000000..be9cc52d --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/html-multipage.xsl @@ -0,0 +1,73 @@ + + + + + + + + + + css/manual-multipage.css + + '5' + '1' + + + + + + + + + + + + + + + + + + + + firstpage + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/html-singlepage.xsl b/spring-cloud-task-docs/src/main/docbook/xsl/html-singlepage.xsl new file mode 100644 index 00000000..6bd4ac81 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/html-singlepage.xsl @@ -0,0 +1,30 @@ + + + + + + + + + + css/manual-singlepage.css + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/html.xsl b/spring-cloud-task-docs/src/main/docbook/xsl/html.xsl new file mode 100644 index 00000000..fd96f9a7 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/html.xsl @@ -0,0 +1,141 @@ + + + + + + + + + + + 1 + + + 1 + + + + 120 + images/callouts/ + .png + + + text/css + + text-align: left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + +

+

Authors

+ +
+ + + + + + + + + + + + + + + + + + # + + + + + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/pdf.xsl b/spring-cloud-task-docs/src/main/docbook/xsl/pdf.xsl new file mode 100644 index 00000000..77360a7b --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/pdf.xsl @@ -0,0 +1,582 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + auto + + + + + underline + #204060 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + Copyright © + + + + + + + + + + + + + + + + + + + + + + + + + + + + -5em + -5em + 8pt + + + + + + + + + + + + + + + please define title in your docbook file! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 8pt + + + + + + + + + + + + + + + + + + + + + + + + + please define title in your docbook file! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + + + false + + + Helvetica + 10 + 8 + Helvetica + + + 1.4 + + + + left + bold + + + pt + + + + + + + + + + + + + + + 0.6em + 0.6em + 0.6em + + + pt + + 0.1em + 0.1em + 0.1em + + + + 0.4em + 0.4em + 0.4em + + + pt + + 0.1em + 0.1em + 0.1em + + + + 0.4em + 0.4em + 0.4em + + + pt + + 0.1em + 0.1em + 0.1em + + + + 0.3em + 0.3em + 0.3em + + + pt + + 0.1em + 0.1em + 0.1em + + + + + + + + 4pt + 4pt + 4pt + 4pt + + + + 0.1pt + 0.1pt + + + + + + + + + + + + + + + + 7pt + wrap + 1 + + + + 1em + 1em + 1em + 0.1em + 0.1em + 0.1em + + #444444 + solid + 0.1pt + 0.5em + 0.5em + 0.5em + 0.5em + 0.5em + 0.5em + + + + 1 + + #F0F0F0 + + + + 0.1em + 0.1em + 0.1em + 0.1em + 0.1em + 0.1em + + + + 0.5em + 0.5em + 0.5em + 0.1em + 0.1em + 0.1em + + + + #444444 + solid + 0.1pt + #F0F0F0 + + + + + + + normal + italic + + + pt + + false + 0.1em + 0.1em + 0.1em + + + + + + 0 + 1 + + + 90 + + + + + + figure after + example after + equation before + table before + procedure before + + + + 1 + 0pt + + + + + + + + + + + + + + + + + + + + 0.1em + 2em + .75pt + solid + #5c5c4f + 0.5em + 1.5em + 1.5em + 1.5em + 1.5em + 1.5em + 1.5em + + + + 10pt + bold + false + always + 0 + + + + 0em + 0em + 0em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl-config.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl-config.xml new file mode 100644 index 00000000..e4d677fc --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl-config.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/asciidoc-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/asciidoc-hl.xml new file mode 100644 index 00000000..5478b1d6 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/asciidoc-hl.xml @@ -0,0 +1,41 @@ + + + + + //// + //// + + + // + + + + ^(={1,6} .+)$ + + MULTILINE + + + ^(\.[^\.\s].+)$ + + MULTILINE + + + ^(:!?\w.*?:) + + MULTILINE + + + ^(-|\*{1,5}|\d*\.{1,5})(?= .+$) + + MULTILINE + + + ^(\[.+\])$ + + MULTILINE + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/bourne-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/bourne-hl.xml new file mode 100644 index 00000000..e2cd98d8 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/bourne-hl.xml @@ -0,0 +1,95 @@ + + + + # + + << + ' + " + - + + + + + " + \ + + + ' + \ + + + + 0x + + + + . + + + + + + if + then + else + elif + fi + case + esac + for + while + until + do + done + + exec + shift + exit + times + break + export + trap + continue + readonly + wait + eval + return + + cd + echo + hash + pwd + read + set + test + type + ulimit + umask + unset + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/c-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/c-hl.xml new file mode 100644 index 00000000..176cc379 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/c-hl.xml @@ -0,0 +1,117 @@ + + + + + /** + */ + + + + + + + + /* + */ + + // + + + # + \ + + + + + " + \ + + + ' + \ + + + 0x + ul + lu + u + l + + + + . + + e + ul + lu + u + f + l + + + + auto + _Bool + break + case + char + _Complex + const + continue + default + do + double + else + enum + extern + float + for + goto + if + _Imaginary + inline + int + long + register + restrict + return + short + signed + sizeof + static + struct + switch + typedef + union + unsigned + void + volatile + while + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/cpp-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/cpp-hl.xml new file mode 100644 index 00000000..ef83c4f5 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/cpp-hl.xml @@ -0,0 +1,151 @@ + + + + + /** + */ + + + + + + + + /* + */ + + // + + + # + \ + + + + + " + \ + + + ' + \ + + + 0x + ul + lu + u + l + + + + . + + e + ul + lu + u + f + l + + + + + auto + _Bool + break + case + char + _Complex + const + continue + default + do + double + else + enum + extern + float + for + goto + if + _Imaginary + inline + int + long + register + restrict + return + short + signed + sizeof + static + struct + switch + typedef + union + unsigned + void + volatile + while + + asm + dynamic_cast + namespace + reinterpret_cast + try + bool + explicit + new + static_cast + typeid + catch + false + operator + template + typename + class + friend + private + this + using + const_cast + inline + public + throw + virtual + delete + mutable + protected + true + wchar_t + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/csharp-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/csharp-hl.xml new file mode 100644 index 00000000..d57e6310 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/csharp-hl.xml @@ -0,0 +1,194 @@ + + + + + /** + */ + + + + /// + + + + /* + */ + + // + + + [ + ] + ( + ) + + + + # + \ + + + + + + @" + " + \ + + + + " + \ + + + ' + \ + + + 0x + ul + lu + u + l + + + + . + + e + ul + lu + u + f + d + m + l + + + + abstract + as + base + bool + break + byte + case + catch + char + checked + class + const + continue + decimal + default + delegate + do + double + else + enum + event + explicit + extern + false + finally + fixed + float + for + foreach + goto + if + implicit + in + int + interface + internal + is + lock + long + namespace + new + null + object + operator + out + override + params + private + protected + public + readonly + ref + return + sbyte + sealed + short + sizeof + stackalloc + static + string + struct + switch + this + throw + true + try + typeof + uint + ulong + unchecked + unsafe + ushort + using + virtual + void + volatile + while + + + + add + alias + from + get + global + group + into + join + orderby + partial + remove + select + set + value + where + yield + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/css-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/css-hl.xml new file mode 100644 index 00000000..164c48c3 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/css-hl.xml @@ -0,0 +1,176 @@ + + + + + /* + */ + + + " + \ + + + + ' + \ + + + + . + + + + @charset + @import + @media + @page + + + + - + azimuth + background-attachment + background-color + background-image + background-position + background-repeat + background + border-collapse + border-color + border-spacing + border-style + border-top + border-right + border-bottom + border-left + border-top-color + border-right-color + border-bottom-color + border-left-color + border-top-style + border-right-style + border-bottom-style + border-left-style + border-top-width + border-right-width + border-bottom-width + border-left-width + border-width + border + bottom + caption-side + clear + clip + color + content + counter-increment + counter-reset + cue-after + cue-before + cue + cursor + direction + display + elevation + empty-cells + float + font-family + font-size + font-style + font-variant + font-weight + font + height + left + letter-spacing + line-height + list-style-image + list-style-position + list-style-type + list-style + margin-right + margin-left + margin-top + margin-bottom + margin + max-height + max-width + min-height + min-width + orphans + outline-color + outline-style + outline-width + outline + overflow + padding-top + padding-right + padding-bottom + padding-left + padding + page-break-after + page-break-before + page-break-inside + pause-after + pause-before + pause + pitch-range + pitch + play-during + position + quotes + richness + right + speak-header + speak-numeral + speak-punctuation + speak + speech-rate + stress + table-layout + text-align + text-decoration + text-indent + text-transform + top + unicode-bidi + vertical-align + visibility + voice-family + volume + white-space + widows + width + word-spacing + z-index + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/html-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/html-hl.xml new file mode 100644 index 00000000..5b6761ba --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/html-hl.xml @@ -0,0 +1,122 @@ + + + + + + + a + abbr + address + area + article + aside + audio + b + base + bdi + blockquote + body + br + button + caption + canvas + cite + code + command + col + colgroup + dd + del + dialog + div + dl + dt + em + embed + fieldset + figcaption + figure + font + form + footer + h1 + h2 + h3 + h4 + h5 + h6 + head + header + hr + html + i + iframe + img + input + ins + kbd + label + legend + li + link + map + mark + menu + menu + meta + nav + noscript + object + ol + optgroup + option + p + param + pre + q + samp + script + section + select + small + source + span + strong + style + sub + summary + sup + table + tbody + td + textarea + tfoot + th + thead + time + title + tr + track + u + ul + var + video + wbr + xmp + + + + + xsl: + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/ini-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/ini-hl.xml new file mode 100644 index 00000000..34c10363 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/ini-hl.xml @@ -0,0 +1,45 @@ + + + + ; + + + ^(\[.+\]\s*)$ + + MULTILINE + + + + ^(.+)(?==) + + MULTILINE + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/java-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/java-hl.xml new file mode 100644 index 00000000..f7bb1641 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/java-hl.xml @@ -0,0 +1,117 @@ + + + + + /** + */ + + + + /* + */ + + // + + " + \ + + + ' + \ + + + @ + ( + ) + + + 0x + + + + . + e + f + d + l + + + + abstract + boolean + break + byte + case + catch + char + class + const + continue + default + do + double + else + extends + final + finally + float + for + goto + if + implements + import + instanceof + int + interface + long + native + new + package + private + protected + public + return + short + static + strictfp + super + switch + synchronized + this + throw + throws + transient + try + void + volatile + while + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/javascript-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/javascript-hl.xml new file mode 100644 index 00000000..99b8a71e --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/javascript-hl.xml @@ -0,0 +1,147 @@ + + + + + /* + */ + + // + + " + \ + + + ' + \ + + + 0x + + + + . + e + + + + break + case + catch + continue + default + delete + do + else + finally + for + function + if + in + instanceof + new + return + switch + this + throw + try + typeof + var + void + while + with + + abstract + boolean + byte + char + class + const + debugger + double + enum + export + extends + final + float + goto + implements + import + int + interface + long + native + package + private + protected + public + short + static + super + synchronized + throws + transient + volatile + + + prototype + + Array + Boolean + Date + Error + EvalError + Function + Math + Number + Object + RangeError + ReferenceError + RegExp + String + SyntaxError + TypeError + URIError + + decodeURI + decodeURIComponent + encodeURI + encodeURIComponent + eval + isFinite + isNaN + parseFloat + parseInt + + Infinity + NaN + undefined + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/json-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/json-hl.xml new file mode 100644 index 00000000..59b9c481 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/json-hl.xml @@ -0,0 +1,37 @@ + + + # + + " + \ + + + ' + \ + + + @ + ( + ) + + + . + e + f + d + l + + + + true + false + + + { + } + , + [ + ] + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/perl-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/perl-hl.xml new file mode 100644 index 00000000..73d71cc0 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/perl-hl.xml @@ -0,0 +1,120 @@ + + + + # + + << + ' + " + + + + " + \ + + + ' + \ + + + + 0x + + + + . + + + + + if + unless + while + until + foreach + else + elsif + for + when + default + given + + caller + continue + die + do + dump + eval + exit + goto + last + next + redo + return + sub + wantarray + + caller + import + local + my + package + use + + do + import + no + package + require + use + + bless + dbmclose + dbmopen + package + ref + tie + tied + untie + use + + and + or + not + eq + ne + lt + gt + le + ge + cmp + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/php-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/php-hl.xml new file mode 100644 index 00000000..1da25b8c --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/php-hl.xml @@ -0,0 +1,154 @@ + + + + + /** + */ + + + + + + + + /* + */ + + // + # + + " + \ + + + + ' + \ + + + + <<< + + + 0x + + + + . + e + + + + and + or + xor + __FILE__ + exception + __LINE__ + array + as + break + case + class + const + continue + declare + default + die + do + echo + else + elseif + empty + enddeclare + endfor + endforeach + endif + endswitch + endwhile + eval + exit + extends + for + foreach + function + global + if + include + include_once + isset + list + new + print + require + require_once + return + static + switch + unset + use + var + while + __FUNCTION__ + __CLASS__ + __METHOD__ + final + php_user_filter + interface + implements + extends + public + private + protected + abstract + clone + try + catch + throw + cfunction + old_function + true + false + + namespace + __NAMESPACE__ + goto + __DIR__ + + + + + ?> + <?php + <?= + + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/properties-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/properties-hl.xml new file mode 100644 index 00000000..775f2f13 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/properties-hl.xml @@ -0,0 +1,38 @@ + + + + # + + ^(.+?)(?==|:) + + MULTILINE + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/python-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/python-hl.xml new file mode 100644 index 00000000..a4674432 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/python-hl.xml @@ -0,0 +1,100 @@ + + + + + + @ + ( + ) + + # + + """ + + + + ''' + + + + " + \ + + + ' + \ + + + 0x + l + + + + . + + e + l + + + + and + del + from + not + while + as + elif + global + or + with + assert + else + if + pass + yield + break + except + import + print + class + exec + in + raise + continue + finally + is + return + def + for + lambda + try + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/ruby-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/ruby-hl.xml new file mode 100644 index 00000000..d105640e --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/ruby-hl.xml @@ -0,0 +1,109 @@ + + + + # + + << + + + + " + \ + + + %Q{ + } + \ + + + %/ + / + \ + + + ' + \ + + + %q{ + } + \ + + + 0x + + + + . + e + + + + alias + and + BEGIN + begin + break + case + class + def + defined + do + else + elsif + END + end + ensure + false + for + if + in + module + next + nil + not + or + redo + rescue + retry + return + self + super + then + true + undef + unless + until + when + while + yield + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/sql2003-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/sql2003-hl.xml new file mode 100644 index 00000000..ac1d5d04 --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/sql2003-hl.xml @@ -0,0 +1,565 @@ + + + + -- + + /* + */ + + + ' + + + + U' + ' + + + + B' + ' + + + + N' + ' + + + + X' + ' + + + + . + + e + + + + + + A + ABS + ABSOLUTE + ACTION + ADA + ADMIN + AFTER + ALWAYS + ASC + ASSERTION + ASSIGNMENT + ATTRIBUTE + ATTRIBUTES + AVG + BEFORE + BERNOULLI + BREADTH + C + CARDINALITY + CASCADE + CATALOG_NAME + CATALOG + CEIL + CEILING + CHAIN + CHAR_LENGTH + CHARACTER_LENGTH + CHARACTER_SET_CATALOG + CHARACTER_SET_NAME + CHARACTER_SET_SCHEMA + CHARACTERISTICS + CHARACTERS + CHECKED + CLASS_ORIGIN + COALESCE + COBOL + CODE_UNITS + COLLATION_CATALOG + COLLATION_NAME + COLLATION_SCHEMA + COLLATION + COLLECT + COLUMN_NAME + COMMAND_FUNCTION_CODE + COMMAND_FUNCTION + COMMITTED + CONDITION_NUMBER + CONDITION + CONNECTION_NAME + CONSTRAINT_CATALOG + CONSTRAINT_NAME + CONSTRAINT_SCHEMA + CONSTRAINTS + CONSTRUCTORS + CONTAINS + CONVERT + CORR + COUNT + COVAR_POP + COVAR_SAMP + CUME_DIST + CURRENT_COLLATION + CURSOR_NAME + DATA + DATETIME_INTERVAL_CODE + DATETIME_INTERVAL_PRECISION + DEFAULTS + DEFERRABLE + DEFERRED + DEFINED + DEFINER + DEGREE + DENSE_RANK + DEPTH + DERIVED + DESC + DESCRIPTOR + DIAGNOSTICS + DISPATCH + DOMAIN + DYNAMIC_FUNCTION_CODE + DYNAMIC_FUNCTION + EQUALS + EVERY + EXCEPTION + EXCLUDE + EXCLUDING + EXP + EXTRACT + FINAL + FIRST + FLOOR + FOLLOWING + FORTRAN + FOUND + FUSION + G + GENERAL + GO + GOTO + GRANTED + HIERARCHY + IMPLEMENTATION + INCLUDING + INCREMENT + INITIALLY + INSTANCE + INSTANTIABLE + INTERSECTION + INVOKER + ISOLATION + K + KEY_MEMBER + KEY_TYPE + KEY + LAST + LENGTH + LEVEL + LN + LOCATOR + LOWER + M + MAP + MATCHED + MAX + MAXVALUE + MESSAGE_LENGTH + MESSAGE_OCTET_LENGTH + MESSAGE_TEXT + MIN + MINVALUE + MOD + MORE + MUMPS + NAME + NAMES + NESTING + NEXT + NORMALIZE + NORMALIZED + NULLABLE + NULLIF + NULLS + NUMBER + OBJECT + OCTET_LENGTH + OCTETS + OPTION + OPTIONS + ORDERING + ORDINALITY + OTHERS + OVERLAY + OVERRIDING + PAD + PARAMETER_MODE + PARAMETER_NAME + PARAMETER_ORDINAL_POSITION + PARAMETER_SPECIFIC_CATALOG + PARAMETER_SPECIFIC_NAME + PARAMETER_SPECIFIC_SCHEMA + PARTIAL + PASCAL + PATH + PERCENT_RANK + PERCENTILE_CONT + PERCENTILE_DISC + PLACING + PLI + POSITION + POWER + PRECEDING + PRESERVE + PRIOR + PRIVILEGES + PUBLIC + RANK + READ + RELATIVE + REPEATABLE + RESTART + RETURNED_CARDINALITY + RETURNED_LENGTH + RETURNED_OCTET_LENGTH + RETURNED_SQLSTATE + ROLE + ROUTINE_CATALOG + ROUTINE_NAME + ROUTINE_SCHEMA + ROUTINE + ROW_COUNT + ROW_NUMBER + SCALE + SCHEMA_NAME + SCHEMA + SCOPE_CATALOG + SCOPE_NAME + SCOPE_SCHEMA + SECTION + SECURITY + SELF + SEQUENCE + SERIALIZABLE + SERVER_NAME + SESSION + SETS + SIMPLE + SIZE + SOURCE + SPACE + SPECIFIC_NAME + SQRT + STATE + STATEMENT + STDDEV_POP + STDDEV_SAMP + STRUCTURE + STYLE + SUBCLASS_ORIGIN + SUBSTRING + SUM + TABLE_NAME + TABLESAMPLE + TEMPORARY + TIES + TOP_LEVEL_COUNT + TRANSACTION_ACTIVE + TRANSACTION + TRANSACTIONS_COMMITTED + TRANSACTIONS_ROLLED_BACK + TRANSFORM + TRANSFORMS + TRANSLATE + TRIGGER_CATALOG + TRIGGER_NAME + TRIGGER_SCHEMA + TRIM + TYPE + UNBOUNDED + UNCOMMITTED + UNDER + UNNAMED + USAGE + USER_DEFINED_TYPE_CATALOG + USER_DEFINED_TYPE_CODE + USER_DEFINED_TYPE_NAME + USER_DEFINED_TYPE_SCHEMA + VIEW + WORK + WRITE + ZONE + + ADD + ALL + ALLOCATE + ALTER + AND + ANY + ARE + ARRAY + AS + ASENSITIVE + ASYMMETRIC + AT + ATOMIC + AUTHORIZATION + BEGIN + BETWEEN + BIGINT + BINARY + BLOB + BOOLEAN + BOTH + BY + CALL + CALLED + CASCADED + CASE + CAST + CHAR + CHARACTER + CHECK + CLOB + CLOSE + COLLATE + COLUMN + COMMIT + CONNECT + CONSTRAINT + CONTINUE + CORRESPONDING + CREATE + CROSS + CUBE + CURRENT_DATE + CURRENT_DEFAULT_TRANSFORM_GROUP + CURRENT_PATH + CURRENT_ROLE + CURRENT_TIME + CURRENT_TIMESTAMP + CURRENT_TRANSFORM_GROUP_FOR_TYPE + CURRENT_USER + CURRENT + CURSOR + CYCLE + DATE + DAY + DEALLOCATE + DEC + DECIMAL + DECLARE + DEFAULT + DELETE + DEREF + DESCRIBE + DETERMINISTIC + DISCONNECT + DISTINCT + DOUBLE + DROP + DYNAMIC + EACH + ELEMENT + ELSE + END + END-EXEC + ESCAPE + EXCEPT + EXEC + EXECUTE + EXISTS + EXTERNAL + FALSE + FETCH + FILTER + FLOAT + FOR + FOREIGN + FREE + FROM + FULL + FUNCTION + GET + GLOBAL + GRANT + GROUP + GROUPING + HAVING + HOLD + HOUR + IDENTITY + IMMEDIATE + IN + INDICATOR + INNER + INOUT + INPUT + INSENSITIVE + INSERT + INT + INTEGER + INTERSECT + INTERVAL + INTO + IS + ISOLATION + JOIN + LANGUAGE + LARGE + LATERAL + LEADING + LEFT + LIKE + LOCAL + LOCALTIME + LOCALTIMESTAMP + MATCH + MEMBER + MERGE + METHOD + MINUTE + MODIFIES + MODULE + MONTH + MULTISET + NATIONAL + NATURAL + NCHAR + NCLOB + NEW + NO + NONE + NOT + NULL + NUMERIC + OF + OLD + ON + ONLY + OPEN + OR + ORDER + OUT + OUTER + OUTPUT + OVER + OVERLAPS + PARAMETER + PARTITION + PRECISION + PREPARE + PRIMARY + PROCEDURE + RANGE + READS + REAL + RECURSIVE + REF + REFERENCES + REFERENCING + REGR_AVGX + REGR_AVGY + REGR_COUNT + REGR_INTERCEPT + REGR_R2 + REGR_SLOPE + REGR_SXX + REGR_SXY + REGR_SYY + RELEASE + RESULT + RETURN + RETURNS + REVOKE + RIGHT + ROLLBACK + ROLLUP + ROW + ROWS + SAVEPOINT + SCROLL + SEARCH + SECOND + SELECT + SENSITIVE + SESSION_USER + SET + SIMILAR + SMALLINT + SOME + SPECIFIC + SPECIFICTYPE + SQL + SQLEXCEPTION + SQLSTATE + SQLWARNING + START + STATIC + SUBMULTISET + SYMMETRIC + SYSTEM_USER + SYSTEM + TABLE + THEN + TIME + TIMESTAMP + TIMEZONE_HOUR + TIMEZONE_MINUTE + TO + TRAILING + TRANSLATION + TREAT + TRIGGER + TRUE + UESCAPE + UNION + UNIQUE + UNKNOWN + UNNEST + UPDATE + UPPER + USER + USING + VALUE + VALUES + VAR_POP + VAR_SAMP + VARCHAR + VARYING + WHEN + WHENEVER + WHERE + WIDTH_BUCKET + WINDOW + WITH + WITHIN + WITHOUT + YEAR + + diff --git a/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/yaml-hl.xml b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/yaml-hl.xml new file mode 100644 index 00000000..a28008ec --- /dev/null +++ b/spring-cloud-task-docs/src/main/docbook/xsl/xslthl/yaml-hl.xml @@ -0,0 +1,47 @@ + + + # + + " + \ + + + ' + \ + + + @ + ( + ) + + + . + e + f + d + l + + + + true + false + + + { + } + , + [ + ] + + + + ^(---)$ + + MULTILINE + + + ^(.+?)(?==|:) + + MULTILINE + + diff --git a/spring-cloud-task-docs/src/main/javadoc/spring-javadoc.css b/spring-cloud-task-docs/src/main/javadoc/spring-javadoc.css new file mode 100644 index 00000000..06ad4227 --- /dev/null +++ b/spring-cloud-task-docs/src/main/javadoc/spring-javadoc.css @@ -0,0 +1,599 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; + width:100%; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} + + + +/* +Spring +*/ + +pre.code { + background-color: #F8F8F8; + border: 1px solid #CCCCCC; + border-radius: 3px 3px 3px 3px; + overflow: auto; + padding: 10px; + margin: 4px 20px 2px 0px; +} + +pre.code code, pre.code code * { + font-size: 1em; +} + +pre.code code, pre.code code * { + padding: 0 !important; + margin: 0 !important; +} + diff --git a/spring-cloud-task-docs/src/main/xslt/dependencyVersions.xsl b/spring-cloud-task-docs/src/main/xslt/dependencyVersions.xsl new file mode 100644 index 00000000..1dabd2ea --- /dev/null +++ b/spring-cloud-task-docs/src/main/xslt/dependencyVersions.xsl @@ -0,0 +1,28 @@ + + + + + + + |=== + | Group ID | Artifact ID | Version + + + + + | ` + + ` + | ` + + ` + | + + + + |=== + + +