diff --git a/CODE_OF_CONDUCT.adoc b/CODE_OF_CONDUCT.adoc index f013d6f36..17783c7c0 100644 --- a/CODE_OF_CONDUCT.adoc +++ b/CODE_OF_CONDUCT.adoc @@ -40,5 +40,5 @@ appropriate to the circumstances. Maintainers are obligated to maintain confiden with regard to the reporter of an incident. This Code of Conduct is adapted from the -http://contributor-covenant.org[Contributor Covenant], version 1.3.0, available at -http://contributor-covenant.org/version/1/3/0/[contributor-covenant.org/version/1/3/0/] +https://contributor-covenant.org[Contributor Covenant], version 1.3.0, available at +https://contributor-covenant.org/version/1/3/0/[contributor-covenant.org/version/1/3/0/] diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1339f97c7..7b2c156ff 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,7 +35,7 @@ Once you've completed the web form, simply add the following in a comment on you 1. Go to [https://github.com/SpringSource/spring-xd](https://github.com/SpringSource/spring-xd) 2. Hit the "fork" button and choose your own github account as the target -3. For more detail see [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/) +3. For more detail see [https://help.github.com/fork-a-repo/](https://help.github.com/fork-a-repo/) ## Setup your Local Development Environment @@ -55,14 +55,14 @@ _you should see branches on `origin` as well as `upstream`, including `master` ( * _Always_ work on topic branches (Typically use the Jira ticket ID as the branch name). - For example, to create and switch to a new branch for issue XD-123: `git checkout -b XD-123` * You might be working on several different topic branches at any given time, but when at a stopping point for one of those branches, commit (a local operation). -* Please follow the "Commit Guidelines" described in this chapter of Pro Git: [http://progit.org/book/ch5-2.html](http://progit.org/book/ch5-2.html) +* Please follow the "Commit Guidelines" described in this chapter of Pro Git: [https://progit.org/book/ch5-2.html](https://progit.org/book/ch5-2.html) * Then to begin working on another issue (say XD-101): `git checkout XD-101`. The _-b_ flag is not needed if that branch already exists in your local repository. * When ready to resolve an issue or to collaborate with others, you can push your branch to origin (your fork), e.g.: `git push origin XD-123` * If you want to collaborate with another contributor, have them fork your repository (add it as a remote) and `git fetch ` to grab your branch. Alternatively, they can use `git fetch --all` to sync their local state with all of their remotes. * If you grant that collaborator push access to your repository, they can even apply their changes to your branch. -* When ready for your contribution to be reviewed for potential inclusion in the master branch of the canonical spring-xd repository (what you know as 'upstream'), issue a pull request to the SpringSource repository (for more detail, see [http://help.github.com/send-pull-requests/](http://help.github.com/send-pull-requests/)). +* When ready for your contribution to be reviewed for potential inclusion in the master branch of the canonical spring-xd repository (what you know as 'upstream'), issue a pull request to the SpringSource repository (for more detail, see [https://help.github.com/send-pull-requests/](https://help.github.com/send-pull-requests/)). * The project lead may merge your changes into the upstream master branch as-is, he may keep the pull request open yet add a comment about something that should be modified, or he might reject the pull request by closing it. -* A prerequisite for any pull request is that it will be cleanly merge-able with the upstream master's current state. **This is the responsibility of any contributor.** If your pull request cannot be applied cleanly, the project lead will most likely add a comment requesting that you make it merge-able. For a full explanation, see the Pro Git section on rebasing: [http://progit.org/book/ch3-6.html](http://progit.org/book/ch3-6.html). As stated there: "> Often, you’ll do this to make sure your commits apply cleanly on a remote branch — perhaps in a project to which you’re trying to contribute but that you don’t maintain." +* A prerequisite for any pull request is that it will be cleanly merge-able with the upstream master's current state. **This is the responsibility of any contributor.** If your pull request cannot be applied cleanly, the project lead will most likely add a comment requesting that you make it merge-able. For a full explanation, see the Pro Git section on rebasing: [https://progit.org/book/ch3-6.html](https://progit.org/book/ch3-6.html). As stated there: "> Often, you’ll do this to make sure your commits apply cleanly on a remote branch — perhaps in a project to which you’re trying to contribute but that you don’t maintain." ## Keeping your Local Code in Sync @@ -76,8 +76,8 @@ _you should see branches on `origin` as well as `upstream`, including `master` ( - Then: `git pull upstream master` - Switch back to the topic branch: `git checkout XD-123` (no -b needed since the branch already exists) - Rebase the topic branch to minimize the distance between it and your recently synched master branch: `git rebase master` -(Again, for more detail see the Pro Git section on rebasing: [http://progit.org/book/ch3-6.html](http://progit.org/book/ch3-6.html)) -* **Note** Be careful with rebasing if you have already pushed your branch to your remote because you'd be rewriting history. If you rebase by mistake, you can undo it as discussed [in this stackoverflow discussion](http://stackoverflow.com/questions/134882/undoing-a-git-rebase). Once you have published your branch, you need to merge in the master rather than rebasing. +(Again, for more detail see the Pro Git section on rebasing: [https://progit.org/book/ch3-6.html](https://progit.org/book/ch3-6.html)) +* **Note** Be careful with rebasing if you have already pushed your branch to your remote because you'd be rewriting history. If you rebase by mistake, you can undo it as discussed [in this stackoverflow discussion](https://stackoverflow.com/questions/134882/undoing-a-git-rebase). Once you have published your branch, you need to merge in the master rather than rebasing. * Now, if you issue a pull request, it is much more likely to be merged without conflicts. Most likely, any pull request that would produce conflicts will be deferred until the issuer of that pull request makes these adjustments. * Assuming your pull request is merged into the 'upstream' master, you will actually end up pulling that change into your own master eventually, and at that time, you may decide to delete the topic branch from your local repository and your fork (origin) if you pushed it there. - to delete the local branch: `git branch -d INT-123` @@ -192,7 +192,7 @@ Search the codebase to find related unit tests and add additional **@Test** meth ## Squash commits -Use `git rebase --interactive`, `git add --patch` and other tools to "squash" multiple commits into atomic changes. In addition to the man pages for git, there are many resources online to help you understand how these tools work. Here is one: http://book.git-scm.com/4_interactive_rebasing.html. +Use `git rebase --interactive`, `git add --patch` and other tools to "squash" multiple commits into atomic changes. In addition to the man pages for git, there are many resources online to help you understand how these tools work. Here is one: https://book.git-scm.com/4_interactive_rebasing.html. ## Use your real name in git commits @@ -225,6 +225,6 @@ See the [Building Spring XD][] section of the reference documentation for instru Add a comment to the associated JIRA issue(s) linking to your new pull request. -[help documentation]: http://help.github.com/send-pull-requests +[help documentation]: https://help.github.com/send-pull-requests [JIRA issue tracker]: https://jira.springsource.org/browse/XD [checking out and building]: https://github.com/SpringSource/spring-xd/wiki/Building-Spring-XD diff --git a/README.md b/README.md index 4eb24f678..c2171d7dc 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,11 @@ You can fork the repository and/or monitor JIRA to see what is going on. As alwa ## Documentation -Look for it on the [XD wiki](https://github.com/springsource/spring-xd/wiki). [API Documentation](http://static.springsource.org/spring-xd/docs/current-SNAPSHOT/api/) (JavaDoc) is available as well. Please also visit the SpringSource.org [project website](http://www.springsource.org/spring-xd) for more information. +Look for it on the [XD wiki](https://github.com/springsource/spring-xd/wiki). [API Documentation](https://docs.spring.io/spring-xd/docs/current-SNAPSHOT/api/) (JavaDoc) is available as well. Please also visit the SpringSource.org [project website](https://www.springsource.org/spring-xd) for more information. ## How to build -Check the documentation on how to build Spring XD [here](http://docs.spring.io/spring-xd/docs/current-SNAPSHOT/reference/html/#building-spring-xd). +Check the documentation on how to build Spring XD [here](https://docs.spring.io/spring-xd/docs/current-SNAPSHOT/reference/html/#building-spring-xd). ## Getting Help @@ -29,7 +29,7 @@ Here are some ways for you to get involved * Create [JIRA](https://jira.springsource.org/browse/XD) tickets for bugs and new features and comment and vote on the ones that you are interested in. * Follow the flow of developing on the [work board](https://jira.springsource.org/secure/RapidBoard.jspa?rapidView=6). -* Github is for social coding: if you want to write code, we encourage contributions through pull requests from [forks of this repository](http://help.github.com/forking/). If you want to contribute code this way, please familiarize yourself with the process outlined for contributing to Spring projects here: [Contributor Guidelines](https://github.com/SpringSource/spring-integration/wiki/Contributor-Guidelines). +* Github is for social coding: if you want to write code, we encourage contributions through pull requests from [forks of this repository](https://help.github.com/forking/). If you want to contribute code this way, please familiarize yourself with the process outlined for contributing to Spring projects here: [Contributor Guidelines](https://github.com/SpringSource/spring-integration/wiki/Contributor-Guidelines). Before we accept a non-trivial patch or pull request we will need you to sign the [contributor's agreement](https://support.springsource.com/spring_committer_signup). Signing the contributor's agreement does not grant anyone commit rights to the main repository, but it does mean that we can accept your contributions, and you will get an author credit if we do. Active contributors might be asked to join the core team, and given the ability to merge pull requests. @@ -51,4 +51,4 @@ Source Metrics are available via Sonar at: [Spring XD JIRA]: https://jira.springsource.org/browse/XD [Apache License]: http://www.apache.org/licenses/LICENSE-2.0 -[Spring Data Book]: http://bit.ly/sd-book +[Spring Data Book]: https://bit.ly/sd-book diff --git a/config/servers.yml b/config/servers.yml index cce5b9c74..9abe86536 100644 --- a/config/servers.yml +++ b/config/servers.yml @@ -34,7 +34,7 @@ # Upper case only. # Note: MANUAL requires specialized code in the consuming module and is unlikely to be # used in an XD application. For more information, see - # http://docs.spring.io/spring-integration/reference/html/amqp.html#amqp-inbound-ack + # https://docs.spring.io/spring-integration/reference/html/amqp.html#amqp-inbound-ack # autoBindDLQ: false # backOffInitialInterval: 1000 # backOffMaxInterval: 10000 diff --git a/extensions/spring-xd-extension-cassandra/src/test/resources/spring-cassandra.yaml b/extensions/spring-xd-extension-cassandra/src/test/resources/spring-cassandra.yaml index e2509fdd4..6038d4184 100644 --- a/extensions/spring-xd-extension-cassandra/src/test/resources/spring-cassandra.yaml +++ b/extensions/spring-xd-extension-cassandra/src/test/resources/spring-cassandra.yaml @@ -1,7 +1,7 @@ # Cassandra storage config YAML # NOTE: -# See http://wiki.apache.org/cassandra/StorageConfiguration for +# See https://wiki.apache.org/cassandra/StorageConfiguration for # full explanations of configuration directives # /NOTE @@ -20,14 +20,14 @@ cluster_name: 'Test Cluster' # Specifying initial_token will override this setting. # # If you already have a cluster with 1 token per node, and wish to migrate to -# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations +# multiple tokens per node, see https://wiki.apache.org/cassandra/Operations # num_tokens: 256 # If you haven't specified num_tokens, or have set it to the default of 1 then # you should always specify InitialToken when setting up a production # cluster for the first time, and often when adding capacity later. # The principle is that each node should be given an equal slice of -# the token ring; see http://wiki.apache.org/cassandra/Operations +# the token ring; see https://wiki.apache.org/cassandra/Operations # for more details. # # If blank, Cassandra will request a token bisecting the range of @@ -36,7 +36,7 @@ cluster_name: 'Test Cluster' # a random token, which will lead to hot spots. initial_token: -# See http://wiki.apache.org/cassandra/HintedHandoff +# See https://wiki.apache.org/cassandra/HintedHandoff hinted_handoff_enabled: true # this defines the maximum amount of time a dead host will have hints # generated. After it has been dead this long, new hints for it will not be @@ -98,7 +98,7 @@ authorizer: org.apache.cassandra.auth.AllowAllAuthorizer # - CollatingOPP collates according to EN,US rules rather than lexical byte # ordering. Use this as an example if you need custom collation. # -# See http://wiki.apache.org/cassandra/Operations for more on +# See https://wiki.apache.org/cassandra/Operations for more on # partitioners and token selection. partitioner: org.apache.cassandra.dht.Murmur3Partitioner @@ -586,7 +586,7 @@ index_interval: 128 # # The passwords used in these options must match the passwords used when generating # the keystore and truststore. For instructions on generating these files, see: -# http://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore +# https://download.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore # server_encryption_options: internode_encryption: none diff --git a/extensions/spring-xd-extension-process/src/main/java/org/springframework/xd/extension/process/ShellWordsParser.java b/extensions/spring-xd-extension-process/src/main/java/org/springframework/xd/extension/process/ShellWordsParser.java index 1f2417f1f..3c4f3125f 100644 --- a/extensions/spring-xd-extension-process/src/main/java/org/springframework/xd/extension/process/ShellWordsParser.java +++ b/extensions/spring-xd-extension-process/src/main/java/org/springframework/xd/extension/process/ShellWordsParser.java @@ -23,7 +23,7 @@ /** * Parses a string into a collection of words based on the - * POSIX / SUSv3 standard. The functionality in + * POSIX / SUSv3 standard. The functionality in * this class is ported from the Ruby * Shellwords * module. diff --git a/extensions/spring-xd-extension-reactor/src/main/resources/org/springframework/xd/integration/reactor/config/spring-integration-reactor.xsd b/extensions/spring-xd-extension-reactor/src/main/resources/org/springframework/xd/integration/reactor/config/spring-integration-reactor.xsd index 91056237c..b59a9c92c 100644 --- a/extensions/spring-xd-extension-reactor/src/main/resources/org/springframework/xd/integration/reactor/config/spring-integration-reactor.xsd +++ b/extensions/spring-xd-extension-reactor/src/main/resources/org/springframework/xd/integration/reactor/config/spring-integration-reactor.xsd @@ -7,11 +7,11 @@ xmlns:tool="http://www.springframework.org/schema/tool" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd"> + xsi:schemaLocation="http://www.springframework.org/schema/tool https://www.springframework.org/schema/tool/spring-tool.xsd"> + schemaLocation="https://www.springframework.org/schema/integration/spring-integration-4.0.xsd"/> diff --git a/scripts/LICENSE b/scripts/LICENSE index f02312be3..589b3a8a1 100644 --- a/scripts/LICENSE +++ b/scripts/LICENSE @@ -557,7 +557,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. The MIT License -Copyright (c) 2010-2014 Google, Inc. http://angularjs.org +Copyright (c) 2010-2014 Google, Inc. https://angularjs.org Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -793,7 +793,7 @@ This software is provided "as is", without any warranty. "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos - available at http://www.jdom.org/images/logos. + available at http://www.jdom.org/images/logos/. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES @@ -876,7 +876,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. >>> angular-busy 4.0.4 Copyright 2014 jQuery Foundation and other contributors -http://jquery.com/ +https://jquery.com/ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the @@ -960,7 +960,7 @@ General Public License Version 2 only ("GPL") or the Common Development and Distribution License("CDDL") (collectively, the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the License at -http://glassfish.java.net/public/CDDL+GPL_1_1.html +https://glassfish.java.net/public/CDDL+GPL_1_1.html or packager/legal/LICENSE.txt. See the License for the specific language governing permissions and limitations under the License. @@ -997,7 +997,7 @@ Copyright (c) 1999-2001 Xerox Corporation, All rights reserved. -This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html +This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution and is available at https://www.eclipse.org/legal/epl-v10.html >>> aspectjweaver-1.6.12 @@ -1008,7 +1008,7 @@ All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution and is available at -http://www.eclipse.org/legal/epl-v10.html +https://www.eclipse.org/legal/epl-v10.html Contributors: PARC initial implementation @@ -1040,4 +1040,4 @@ Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this software; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA -02110-1301 USA, or see the FSF site: http://www.fsf.org. +02110-1301 USA, or see the FSF site: https://www.fsf.org. diff --git a/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/core/RichGauge.java b/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/core/RichGauge.java index 4ae617d62..19caa15a4 100644 --- a/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/core/RichGauge.java +++ b/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/core/RichGauge.java @@ -23,7 +23,7 @@ *

* The value of the average will depend on whether a weight ('alpha') is set for the gauge. If it is unset, the average * will contain a simple arithmetic mean. If a weight is set, an exponential moving average will be calculated as - * defined in this NIST document. + * defined in this NIST document. * * @author Luke Taylor */ diff --git a/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/core/RichGaugeRepository.java b/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/core/RichGaugeRepository.java index 72c90ad77..b952ec49a 100644 --- a/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/core/RichGaugeRepository.java +++ b/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/core/RichGaugeRepository.java @@ -26,7 +26,7 @@ * to zero. * * Supports a "smoothing constant", "alpha" for use in calculating an exponential moving average for the + * href="https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc431.htm">exponential moving average for the * gauge. * The parameter can be changed at any time after the gauge has been created. The mean calculated up to that point will * be used to initialize the moving average from that point on. diff --git a/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/redis/AbstractRedisMetricRepository.java b/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/redis/AbstractRedisMetricRepository.java index aa5163fe9..0560af314 100644 --- a/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/redis/AbstractRedisMetricRepository.java +++ b/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/redis/AbstractRedisMetricRepository.java @@ -163,7 +163,7 @@ public boolean exists(String s) { @Override public List findAll() { List gauges = new ArrayList(); - // TODO asking for keys is not recommended. See http://redis.io/commands/keys + // TODO asking for keys is not recommended. See https://redis.io/commands/keys // Need to keep track of created instances explicitly. Set keys = this.redisOperations.keys(this.metricPrefix + "*"); for (String key : keys) { diff --git a/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/redis/RedisFieldValueCounterRepository.java b/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/redis/RedisFieldValueCounterRepository.java index 47d457231..8541ec66b 100644 --- a/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/redis/RedisFieldValueCounterRepository.java +++ b/spring-xd-analytics/src/main/java/org/springframework/xd/analytics/metrics/redis/RedisFieldValueCounterRepository.java @@ -122,7 +122,7 @@ public boolean exists(String s) { public List findAll() { List counters = new ArrayList(); // TODO asking for keys is not recommended. See - // http://redis.io/commands/keys + // https://redis.io/commands/keys Set keys = this.redisTemplate.keys(this.metricPrefix + "*"); for (String key : keys) { // TODO remove this naming convention for minute aggregates diff --git a/spring-xd-analytics/src/test/java/org/springframework/xd/analytics/metrics/core/RichGaugeTests.java b/spring-xd-analytics/src/test/java/org/springframework/xd/analytics/metrics/core/RichGaugeTests.java index 5a61fb7d5..2a5d4cadf 100644 --- a/spring-xd-analytics/src/test/java/org/springframework/xd/analytics/metrics/core/RichGaugeTests.java +++ b/spring-xd-analytics/src/test/java/org/springframework/xd/analytics/metrics/core/RichGaugeTests.java @@ -65,7 +65,7 @@ public void resetWorks() throws Exception { assertEquals(0, g.getCount()); } - // Data from http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc431.htm + // Data from https://www.itl.nist.gov/div898/handbook/pmc/section4/pmc431.htm @Test public void testExponentialMovingAverage() throws Exception { RichGauge g = new RichGauge("blah"); diff --git a/spring-xd-batch/src/main/java/org/springframework/xd/batch/hsqldb/server/HSQLServerBean.java b/spring-xd-batch/src/main/java/org/springframework/xd/batch/hsqldb/server/HSQLServerBean.java index 33834dede..24a376c85 100644 --- a/spring-xd-batch/src/main/java/org/springframework/xd/batch/hsqldb/server/HSQLServerBean.java +++ b/spring-xd-batch/src/main/java/org/springframework/xd/batch/hsqldb/server/HSQLServerBean.java @@ -114,7 +114,7 @@ private void startServer() throws Exception { // This Stack Overflow thread indicates that it happens on // Tomcat as well: // - // http://stackoverflow.com/questions/16191236/ + // https://stackoverflow.com/questions/16191236/ // tomcat-startup-fails-due-to-java-net-socketexception-invalid-argument-on-mac-o // // This will be fixed in Java 7u60: diff --git a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/job/dsl/JobSpecification.java b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/job/dsl/JobSpecification.java index 4ca6fa5e0..65844deb3 100644 --- a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/job/dsl/JobSpecification.java +++ b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/job/dsl/JobSpecification.java @@ -341,23 +341,23 @@ public Element[] preJobSpecWalk() { // + // xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd + // http://www.springframework.org/schema/batch https://www.springframework.org/schema/batch/spring-batch.xsd"> this.doc = domImplementation.createDocument("http://www.springframework.org/schema/beans", "beans", null); doc.createElementNS("http://www.springframework.org/schema/batch", "batch"); - doc.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:batch", + doc.getDocumentElement().setAttributeNS("https://www.w3.org/2000/xmlns/", "xmlns:batch", "http://www.springframework.org/schema/batch"); - doc.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xsi", + doc.getDocumentElement().setAttributeNS("https://www.w3.org/2000/xmlns/", "xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); doc.getDocumentElement().setAttributeNS( "http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", - "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd " + "http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd " + - "http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch.xsd"); + "http://www.springframework.org/schema/batch https://www.springframework.org/schema/batch/spring-batch.xsd"); // Setting this 'again' to get it on the front and look more like the above. - doc.getDocumentElement().setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", + doc.getDocumentElement().setAttributeNS("https://www.w3.org/2000/xmlns/", "xmlns", "http://www.springframework.org/schema/beans"); // Generate: @@ -369,7 +369,7 @@ public Element[] preJobSpecWalk() { // Generate: this.batchJobElement = doc.createElement("batch:job"); doc.getDocumentElement().appendChild(batchJobElement); - batchJobElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", + batchJobElement.setAttributeNS("https://www.w3.org/2000/xmlns/", "xmlns", "http://www.springframework.org/schema/batch"); if (batchJobId != null) { batchJobElement.setAttribute("id", batchJobId); @@ -506,7 +506,7 @@ public void postJobSpecWalk(Element[] elements, JobSpecification jobSpec) { transformer = transformerFactory.newTransformer(); if (prettyPrint) { transformer.setOutputProperty(OutputKeys.INDENT, "yes"); - transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); + transformer.setOutputProperty("{https://xml.apache.org/xslt}indent-amount", "2"); } DOMSource source = new DOMSource(doc); StringResult sr = new StringResult(); diff --git a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/module/ModuleDeployer.java b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/module/ModuleDeployer.java index 3e0dcd98e..35ac73134 100644 --- a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/module/ModuleDeployer.java +++ b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/module/ModuleDeployer.java @@ -48,7 +48,7 @@ *

* In order to initialize modules with the correct application context, * this class maintains a reference to the global application context. - * See + * See * the reference documentation for more details. * * @author Mark Fisher diff --git a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/rest/AccessControlInterceptor.java b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/rest/AccessControlInterceptor.java index fb07546cb..8ad248523 100644 --- a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/rest/AccessControlInterceptor.java +++ b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/rest/AccessControlInterceptor.java @@ -58,7 +58,7 @@ class AccessControlInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { // For PUT requests we need an extra round-trip - // See e.g. http://www.html5rocks.com/en/tutorials/cors/ + // See e.g. https://www.html5rocks.com/en/tutorials/cors/ String acRequestMethod = request.getHeader(ACCESS_CONTROL_REQUEST_METHOD); String acRequestHeaders = request.getHeader(ACCESS_CONTROL_REQUEST_HEADERS); diff --git a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/server/container/ContainerRegistrar.java b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/server/container/ContainerRegistrar.java index f8138e777..92cfd78b4 100644 --- a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/server/container/ContainerRegistrar.java +++ b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/server/container/ContainerRegistrar.java @@ -269,7 +269,7 @@ private void registerWithZooKeeper(CuratorFramework client) { /** * Calculate an exponential delay per the algorithm described - * in http://en.wikipedia.org/wiki/Exponential_backoff. + * in https://en.wikipedia.org/wiki/Exponential_backoff. * * @param attempts number of failed attempts * @param max the maximum amount of time to wait diff --git a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/util/BannerUtils.java b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/util/BannerUtils.java index b5e38b733..6e9c2f063 100644 --- a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/util/BannerUtils.java +++ b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/util/BannerUtils.java @@ -85,7 +85,7 @@ public static String displayBanner(String containerName, .append(StringUtils.isEmpty(containerName) ? "" : "Started : " + containerName) .append(LINE_SEPARATOR) - .append("Documentation: http://docs.spring.io/spring-xd/docs/current/reference/html/") + .append("Documentation: https://docs.spring.io/spring-xd/docs/current/reference/html/") .append(LINE_SEPARATOR); return sb.toString(); } diff --git a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/util/XdConfigLoggingInitializer.java b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/util/XdConfigLoggingInitializer.java index f489d624f..08339b7b3 100644 --- a/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/util/XdConfigLoggingInitializer.java +++ b/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/util/XdConfigLoggingInitializer.java @@ -155,7 +155,7 @@ private void logAdminUI() { String httpPort = environment.resolvePlaceholders(ADMIN_PORT); Assert.notNull(httpPort, "Admin server port is not set."); logger.info("Admin web UI: " - + String.format("http://%s:%s/%s", RuntimeUtils.getHost(), httpPort, + + String.format("https://%s:%s/%s", RuntimeUtils.getHost(), httpPort, ConfigLocations.XD_ADMIN_UI_BASE_PATH)); } diff --git a/spring-xd-dirt/src/main/resources/application.yml b/spring-xd-dirt/src/main/resources/application.yml index d6eb29752..10fe4977f 100644 --- a/spring-xd-dirt/src/main/resources/application.yml +++ b/spring-xd-dirt/src/main/resources/application.yml @@ -126,7 +126,7 @@ xd: # Upper case only. # Note: MANUAL requires specialized code in the consuming module and is unlikely to be # used in an XD application. For more information, see - # http://docs.spring.io/spring-integration/reference/html/amqp.html#amqp-inbound-ack + # https://docs.spring.io/spring-integration/reference/html/amqp.html#amqp-inbound-ack autoBindDLQ: false backOffInitialInterval: 1000 backOffMaxInterval: 10000 diff --git a/spring-xd-dirt/src/test/resources/org/springframework/integration/x/twitter/tweet.json b/spring-xd-dirt/src/test/resources/org/springframework/integration/x/twitter/tweet.json index 2f52f35e4..0df9384cd 100644 --- a/spring-xd-dirt/src/test/resources/org/springframework/integration/x/twitter/tweet.json +++ b/spring-xd-dirt/src/test/resources/org/springframework/integration/x/twitter/tweet.json @@ -1,23 +1,23 @@ {"@class":"org.springframework.integration.x.twitter.XDTweet", "id":376497604789805056, -"text":"RT @SexenioMX: El presidente de #EEUU, Barack #Obama advirti— que #Siria no se convertir‡ en #Afganist‡n o #Irak #PrayForSyria http://t.co/É", +"text":"RT @SexenioMX: El presidente de #EEUU, Barack #Obama advirti� que #Siria no se convertir� en #Afganist�n o #Irak #PrayForSyria https://t.co/�", "createdAt":["java.util.Date",1378598998000], "fromUser":"LunaEsMio", -"profileImageUrl":"http://a0.twimg.com/profile_images/2577122031/m7_normal.jpg", +"profileImageUrl":"https://a0.twimg.com/profile_images/2577122031/m7_normal.jpg", "toUserId":803084173, "inReplyToStatusId":null, "inReplyToUserId":null, "inReplyToScreenName":"null", "fromUserId":0, "languageCode":"es", -"source":"Botize", +"source":"Botize", "retweetCount":40,"retweeted":false, "retweetedStatus":{"@class":"org.springframework.integration.x.twitter.XDTweet", -"id":376488668250120192,"text":"El presidente de #EEUU, Barack #Obama advirti— que #Siria no se convertir‡ en #Afganist‡n o #Irak #PrayForSyria http://t.co/RyvPPlPRcH", +"id":376488668250120192,"text":"El presidente de #EEUU, Barack #Obama advirti� que #Siria no se convertir� en #Afganist�n o #Irak #PrayForSyria https://t.co/RyvPPlPRcH", "createdAt":["java.util.Date",1378596868000], "fromUser":"SexenioMX", "profileImageUrl": -"http://a0.twimg.com/profile_images/3426897218/9ab62e1fd2fe26a40e3e19df6b2d6f76_normal.jpeg", +"https://a0.twimg.com/profile_images/3426897218/9ab62e1fd2fe26a40e3e19df6b2d6f76_normal.jpeg", "toUserId":195914313, "inReplyToStatusId":null, "inReplyToUserId":null, @@ -28,7 +28,7 @@ "retweeted":false,"retweetedStatus":null, "favorited":false, "entities":{"@class":"org.springframework.integration.x.twitter.XDEntities", -"urls":["java.util.ArrayList",[{"@class":"org.springframework.integration.x.twitter.XDUrlEntity","url":"http://t.co/RyvPPlPRcH","indices":[112,134],"displayUrl":"sexenio.com.mx/articulo.php?iÉ","expandedUrl":"http://www.sexenio.com.mx/articulo.php?id=37765"}]], +"urls":["java.util.ArrayList",[{"@class":"org.springframework.integration.x.twitter.XDUrlEntity","url":"https://t.co/RyvPPlPRcH","indices":[112,134],"displayUrl":"sexenio.com.mx/articulo.php?i�","expandedUrl":"http://www.sexenio.com.mx/articulo.php?id=37765"}]], "mentions":["java.util.ArrayList",[]], "media":["java.util.ArrayList",[]], "tickerSymbols":["java.util.ArrayList",[]], @@ -36,7 +36,7 @@ [{"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"EEUU","indices":[17,22]}, {"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Obama","indices":[31,37]}, {"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Siria","indices":[51,57]}, -{"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Afganist‡n","indices":[78,89]}, +{"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Afganist�n","indices":[78,89]}, {"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Irak","indices":[92,97]}, {"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"PrayForSyria","indices":[98,111]}]]},"user":null}, "favorited":false,"entities": @@ -48,6 +48,6 @@ [{"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"EEUU","indices":[32,37]}, {"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Obama","indices":[46,52]}, {"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Siria","indices":[66,72]}, -{"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Afganist‡n","indices":[93,104]}, +{"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Afganist�n","indices":[93,104]}, {"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"Irak","indices":[107,112]}, {"@class":"org.springframework.integration.x.twitter.XDHashTagEntity","text":"PrayForSyria","indices":[113,126]}]]},"user":null} \ No newline at end of file diff --git a/spring-xd-dirt/src/test/resources/testmodules/source/source-config/lib/source-config.jar b/spring-xd-dirt/src/test/resources/testmodules/source/source-config/lib/source-config.jar index 58369d52a..046767c9f 100644 --- a/spring-xd-dirt/src/test/resources/testmodules/source/source-config/lib/source-config.jar +++ b/spring-xd-dirt/src/test/resources/testmodules/source/source-config/lib/source-config.jar @@ -2,9 +2,9 @@ + https://www.springframework.org/schema/integration/spring-integration.xsd"> diff --git a/spring-xd-hadoop/src/main/resources/org/springframework/xd/integration/hadoop/config/spring-integration-hadoop.xsd b/spring-xd-hadoop/src/main/resources/org/springframework/xd/integration/hadoop/config/spring-integration-hadoop.xsd index 345a3c262..1961eb380 100644 --- a/spring-xd-hadoop/src/main/resources/org/springframework/xd/integration/hadoop/config/spring-integration-hadoop.xsd +++ b/spring-xd-hadoop/src/main/resources/org/springframework/xd/integration/hadoop/config/spring-integration-hadoop.xsd @@ -9,7 +9,7 @@ + schemaLocation="https://www.springframework.org/schema/integration/spring-integration-4.0.xsd"/> + * @see */ abstract static class JavaClassMimeTypeConversion { diff --git a/spring-xd-reactor/src/main/java/org/springframework/xd/reactor/BroadcasterMessageHandler.java b/spring-xd-reactor/src/main/java/org/springframework/xd/reactor/BroadcasterMessageHandler.java index 010f3caac..12f52c8ba 100644 --- a/spring-xd-reactor/src/main/java/org/springframework/xd/reactor/BroadcasterMessageHandler.java +++ b/spring-xd-reactor/src/main/java/org/springframework/xd/reactor/BroadcasterMessageHandler.java @@ -45,7 +45,7 @@ * result in 2 messages in the log, no matter how many dispatcher threads are used. *

* You can modify what thread the outputStream subscriber, which does the send to the output channel, - * will use by explicitly calling dispatchOn or other switch (http://projectreactor.io/docs/reference/#streams-multithreading) + * will use by explicitly calling dispatchOn or other switch (https://projectreactor.io/docs/reference/#streams-multithreading) * before returning the outputStream from your processor. *

* Use {@link org.springframework.xd.reactor.MultipleBroadcasterMessageHandler} for concurrent execution on dispatcher diff --git a/spring-xd-shell/src/test/resources/tweet1.txt b/spring-xd-shell/src/test/resources/tweet1.txt index 3ac5488e0..9f0a98d71 100644 --- a/spring-xd-shell/src/test/resources/tweet1.txt +++ b/spring-xd-shell/src/test/resources/tweet1.txt @@ -1 +1 @@ -{"id":365217299763970050,"text":"RT @rob_winch: @rob_winch Entire #SpringFramework application fits in a single Tweet (no config or web.xml) Learn more https://t.co/05B6NbW�","createdAt":1375909564000,"fromUser":"SpringSource","profileImageUrl":"http://a0.twimg.com/profile_images/378800000019169111/5d010170796dd48722e313e7aef4bbdc_normal.png","toUserId":0,"inReplyToStatusId":null,"inReplyToUserId":null,"inReplyToScreenName":"null","fromUserId":16402798,"languageCode":"en","source":"TweetDeck","retweetCount":5,"retweeted":false,"retweetedStatus":{"id":364872758997422080,"text":"@rob_winch Entire #SpringFramework application fits in a single Tweet (no config or web.xml) Learn more https://t.co/05B6NbWbpI","createdAt":1375827419000,"fromUser":"rob_winch","profileImageUrl":"http://a0.twimg.com/profile_images/2379908317/df0v7sn2cmyd0c9ad8xf_normal.jpeg","toUserId":567794882,"inReplyToStatusId":364871658483351552,"inReplyToUserId":567794882,"inReplyToScreenName":"rob_winch","fromUserId":567794882,"languageCode":"en","source":"Polly","retweetCount":5,"retweeted":false,"retweetedStatus":null,"favorited":false,"entities":{"urls":[{"url":"https://t.co/05B6NbWbpI","indices":[104,127],"displayUrl":"github.com/SpringSource/s�","expandedUrl":"https://github.com/SpringSource/spring-boot#spring-boot"}],"mentions":[{"id":567794882,"name":"Rob Winch","indices":[0,10],"screen_name":"rob_winch"}],"media":[],"tickerSymbols":[],"hashTags":[{"text":"SpringFramework","indices":[18,34]}]},"user":{"id":567794882,"screenName":"rob_winch","name":"Rob Winch","url":null,"profileImageUrl":"http://a0.twimg.com/profile_images/2379908317/df0v7sn2cmyd0c9ad8xf_normal.jpeg","description":"@SpringSecurity Lead at @gopivotal and open source enthusiast","location":"","createdDate":1335841475000,"language":"en","statusesCount":245,"friendsCount":80,"followersCount":262,"favoritesCount":4,"listedCount":16,"following":false,"followRequestSent":false,"notificationsEnabled":false,"verified":false,"geoEnabled":false,"contributorsEnabled":false,"translator":false,"timeZone":"Central Time (US & Canada)","utcOffset":-18000,"sidebarBorderColor":"A8C7F7","sidebarFillColor":"C0DFEC","backgroundColor":"022330","backgroundImageUrl":"http://a0.twimg.com/images/themes/theme15/bg.png","backgroundImageTiled":false,"textColor":"333333","linkColor":"0084B4","protected":false,"profileUrl":"http://twitter.com/rob_winch"},"retweet":false},"favorited":false,"entities":{"urls":[],"mentions":[{"id":567794882,"name":"Rob Winch","indices":[3,13],"screen_name":"rob_winch"},{"id":567794882,"name":"Rob Winch","indices":[15,25],"screen_name":"rob_winch"}],"media":[],"tickerSymbols":[],"hashTags":[{"text":"SpringFramework","indices":[33,49]}]},"user":{"id":16402798,"screenName":"SpringSource","name":"SpringSource","url":"http://t.co/rpYNXlPS1M","profileImageUrl":"http://a0.twimg.com/profile_images/378800000019169111/5d010170796dd48722e313e7aef4bbdc_normal.png","description":"Spring is the most popular application development framework for enterprise Java�. Millions of developers use Spring to create modern, portable applications.","location":"Palo Alto, California","createdDate":1222088095000,"language":"en","statusesCount":1548,"friendsCount":276,"followersCount":22005,"favoritesCount":13,"listedCount":1111,"following":false,"followRequestSent":false,"notificationsEnabled":false,"verified":false,"geoEnabled":false,"contributorsEnabled":false,"translator":false,"timeZone":"Pacific Time (US & Canada)","utcOffset":-25200,"sidebarBorderColor":"FFFFFF","sidebarFillColor":"D4E2CB","backgroundColor":"3FA03D","backgroundImageUrl":"http://a0.twimg.com/profile_background_images/378800000003377308/1cc9719dd839366e135c7fc9fa7d801b.png","backgroundImageTiled":false,"textColor":"333333","linkColor":"0094D3","protected":false,"profileUrl":"http://twitter.com/SpringSource"},"retweet":true} +{"id":365217299763970050,"text":"RT @rob_winch: @rob_winch Entire #SpringFramework application fits in a single Tweet (no config or web.xml) Learn more https://t.co/05B6NbW�","createdAt":1375909564000,"fromUser":"SpringSource","profileImageUrl":"https://a0.twimg.com/profile_images/378800000019169111/5d010170796dd48722e313e7aef4bbdc_normal.png","toUserId":0,"inReplyToStatusId":null,"inReplyToUserId":null,"inReplyToScreenName":"null","fromUserId":16402798,"languageCode":"en","source":"TweetDeck","retweetCount":5,"retweeted":false,"retweetedStatus":{"id":364872758997422080,"text":"@rob_winch Entire #SpringFramework application fits in a single Tweet (no config or web.xml) Learn more https://t.co/05B6NbWbpI","createdAt":1375827419000,"fromUser":"rob_winch","profileImageUrl":"https://a0.twimg.com/profile_images/2379908317/df0v7sn2cmyd0c9ad8xf_normal.jpeg","toUserId":567794882,"inReplyToStatusId":364871658483351552,"inReplyToUserId":567794882,"inReplyToScreenName":"rob_winch","fromUserId":567794882,"languageCode":"en","source":"Polly","retweetCount":5,"retweeted":false,"retweetedStatus":null,"favorited":false,"entities":{"urls":[{"url":"https://t.co/05B6NbWbpI","indices":[104,127],"displayUrl":"github.com/SpringSource/s�","expandedUrl":"https://github.com/SpringSource/spring-boot#spring-boot"}],"mentions":[{"id":567794882,"name":"Rob Winch","indices":[0,10],"screen_name":"rob_winch"}],"media":[],"tickerSymbols":[],"hashTags":[{"text":"SpringFramework","indices":[18,34]}]},"user":{"id":567794882,"screenName":"rob_winch","name":"Rob Winch","url":null,"profileImageUrl":"https://a0.twimg.com/profile_images/2379908317/df0v7sn2cmyd0c9ad8xf_normal.jpeg","description":"@SpringSecurity Lead at @gopivotal and open source enthusiast","location":"","createdDate":1335841475000,"language":"en","statusesCount":245,"friendsCount":80,"followersCount":262,"favoritesCount":4,"listedCount":16,"following":false,"followRequestSent":false,"notificationsEnabled":false,"verified":false,"geoEnabled":false,"contributorsEnabled":false,"translator":false,"timeZone":"Central Time (US & Canada)","utcOffset":-18000,"sidebarBorderColor":"A8C7F7","sidebarFillColor":"C0DFEC","backgroundColor":"022330","backgroundImageUrl":"https://a0.twimg.com/images/themes/theme15/bg.png","backgroundImageTiled":false,"textColor":"333333","linkColor":"0084B4","protected":false,"profileUrl":"https://twitter.com/rob_winch"},"retweet":false},"favorited":false,"entities":{"urls":[],"mentions":[{"id":567794882,"name":"Rob Winch","indices":[3,13],"screen_name":"rob_winch"},{"id":567794882,"name":"Rob Winch","indices":[15,25],"screen_name":"rob_winch"}],"media":[],"tickerSymbols":[],"hashTags":[{"text":"SpringFramework","indices":[33,49]}]},"user":{"id":16402798,"screenName":"SpringSource","name":"SpringSource","url":"https://t.co/rpYNXlPS1M","profileImageUrl":"https://a0.twimg.com/profile_images/378800000019169111/5d010170796dd48722e313e7aef4bbdc_normal.png","description":"Spring is the most popular application development framework for enterprise Java�. Millions of developers use Spring to create modern, portable applications.","location":"Palo Alto, California","createdDate":1222088095000,"language":"en","statusesCount":1548,"friendsCount":276,"followersCount":22005,"favoritesCount":13,"listedCount":1111,"following":false,"followRequestSent":false,"notificationsEnabled":false,"verified":false,"geoEnabled":false,"contributorsEnabled":false,"translator":false,"timeZone":"Pacific Time (US & Canada)","utcOffset":-25200,"sidebarBorderColor":"FFFFFF","sidebarFillColor":"D4E2CB","backgroundColor":"3FA03D","backgroundImageUrl":"https://a0.twimg.com/profile_background_images/378800000003377308/1cc9719dd839366e135c7fc9fa7d801b.png","backgroundImageTiled":false,"textColor":"333333","linkColor":"0094D3","protected":false,"profileUrl":"https://twitter.com/SpringSource"},"retweet":true} diff --git a/spring-xd-shell/src/test/resources/tweet2.txt b/spring-xd-shell/src/test/resources/tweet2.txt index 7e527f477..1ef27740a 100644 --- a/spring-xd-shell/src/test/resources/tweet2.txt +++ b/spring-xd-shell/src/test/resources/tweet2.txt @@ -1 +1 @@ -{"id":365216675873828864,"text":"#SpringOne session -Real World Applications with Spring Data Neo4J http://t.co/y1UXgcAkoi #neo4j #springdata @mesirii #nosql @SpringData","createdAt":1375909415000,"fromUser":"SpringSource","profileImageUrl":"http://a0.twimg.com/profile_images/378800000019169111/5d010170796dd48722e313e7aef4bbdc_normal.png","toUserId":0,"inReplyToStatusId":null,"inReplyToUserId":null,"inReplyToScreenName":"null","fromUserId":16402798,"languageCode":"en","source":"TweetDeck","retweetCount":2,"retweeted":false,"retweetedStatus":null,"favorited":false,"entities":{"urls":[{"url":"http://t.co/y1UXgcAkoi","indices":[67,89],"displayUrl":"bit.ly/15NdMuU","expandedUrl":"http://bit.ly/15NdMuU"}],"mentions":[{"id":7596542,"name":"Michael Hunger","indices":[110,118],"screen_name":"mesirii"},{"id":224151453,"name":"Spring Data Team","indices":[126,137],"screen_name":"SpringData"}],"media":[],"tickerSymbols":[],"hashTags":[{"text":"SpringOne","indices":[0,10]},{"text":"neo4j","indices":[91,97]},{"text":"springdata","indices":[98,109]},{"text":"nosql","indices":[119,125]}]},"user":{"id":16402798,"screenName":"SpringSource","name":"SpringSource","url":"http://t.co/rpYNXlPS1M","profileImageUrl":"http://a0.twimg.com/profile_images/378800000019169111/5d010170796dd48722e313e7aef4bbdc_normal.png","description":"Spring is the most popular application development framework for enterprise Java�. Millions of developers use Spring to create modern, portable applications.","location":"Palo Alto, California","createdDate":1222088095000,"language":"en","statusesCount":1548,"friendsCount":276,"followersCount":22005,"favoritesCount":13,"listedCount":1111,"following":false,"followRequestSent":false,"notificationsEnabled":false,"verified":false,"geoEnabled":false,"contributorsEnabled":false,"translator":false,"timeZone":"Pacific Time (US & Canada)","utcOffset":-25200,"sidebarBorderColor":"FFFFFF","sidebarFillColor":"D4E2CB","backgroundColor":"3FA03D","backgroundImageUrl":"http://a0.twimg.com/profile_background_images/378800000003377308/1cc9719dd839366e135c7fc9fa7d801b.png","backgroundImageTiled":false,"textColor":"333333","linkColor":"0094D3","protected":false,"profileUrl":"http://twitter.com/SpringSource"},"retweet":false} +{"id":365216675873828864,"text":"#SpringOne session -Real World Applications with Spring Data Neo4J https://t.co/y1UXgcAkoi #neo4j #springdata @mesirii #nosql @SpringData","createdAt":1375909415000,"fromUser":"SpringSource","profileImageUrl":"https://a0.twimg.com/profile_images/378800000019169111/5d010170796dd48722e313e7aef4bbdc_normal.png","toUserId":0,"inReplyToStatusId":null,"inReplyToUserId":null,"inReplyToScreenName":"null","fromUserId":16402798,"languageCode":"en","source":"TweetDeck","retweetCount":2,"retweeted":false,"retweetedStatus":null,"favorited":false,"entities":{"urls":[{"url":"https://t.co/y1UXgcAkoi","indices":[67,89],"displayUrl":"bit.ly/15NdMuU","expandedUrl":"https://bit.ly/15NdMuU"}],"mentions":[{"id":7596542,"name":"Michael Hunger","indices":[110,118],"screen_name":"mesirii"},{"id":224151453,"name":"Spring Data Team","indices":[126,137],"screen_name":"SpringData"}],"media":[],"tickerSymbols":[],"hashTags":[{"text":"SpringOne","indices":[0,10]},{"text":"neo4j","indices":[91,97]},{"text":"springdata","indices":[98,109]},{"text":"nosql","indices":[119,125]}]},"user":{"id":16402798,"screenName":"SpringSource","name":"SpringSource","url":"https://t.co/rpYNXlPS1M","profileImageUrl":"https://a0.twimg.com/profile_images/378800000019169111/5d010170796dd48722e313e7aef4bbdc_normal.png","description":"Spring is the most popular application development framework for enterprise Java�. Millions of developers use Spring to create modern, portable applications.","location":"Palo Alto, California","createdDate":1222088095000,"language":"en","statusesCount":1548,"friendsCount":276,"followersCount":22005,"favoritesCount":13,"listedCount":1111,"following":false,"followRequestSent":false,"notificationsEnabled":false,"verified":false,"geoEnabled":false,"contributorsEnabled":false,"translator":false,"timeZone":"Pacific Time (US & Canada)","utcOffset":-25200,"sidebarBorderColor":"FFFFFF","sidebarFillColor":"D4E2CB","backgroundColor":"3FA03D","backgroundImageUrl":"https://a0.twimg.com/profile_background_images/378800000003377308/1cc9719dd839366e135c7fc9fa7d801b.png","backgroundImageTiled":false,"textColor":"333333","linkColor":"0094D3","protected":false,"profileUrl":"https://twitter.com/SpringSource"},"retweet":false} diff --git a/spring-xd-shell/src/test/resources/tweet3.txt b/spring-xd-shell/src/test/resources/tweet3.txt index d3376c200..cc6ca31d9 100644 --- a/spring-xd-shell/src/test/resources/tweet3.txt +++ b/spring-xd-shell/src/test/resources/tweet3.txt @@ -1 +1 @@ -{"id":365201363833069568,"text":"Sprind Data \"Babbage\" RC1 released with #MongoDB aggregation framework support http://t.co/5JQxoq7b3m #jpa #neo4j congrats @SpringData team!","createdAt":1375905764000,"fromUser":"BestNoSQL","profileImageUrl":"http://a0.twimg.com/profile_images/378800000031408762/3bb3d5ab19f3ede4676764115b85d7e2_normal.jpeg","toUserId":0,"inReplyToStatusId":null,"inReplyToUserId":null,"inReplyToScreenName":"null","fromUserId":1539690888,"languageCode":"en","source":"BestNoSQL","retweetCount":0,"retweeted":false,"retweetedStatus":null,"favorited":false,"entities":{"urls":[{"url":"http://t.co/5JQxoq7b3m","indices":[79,101],"displayUrl":"bit.ly/17vyM4T","expandedUrl":"http://bit.ly/17vyM4T"}],"mentions":[{"id":224151453,"name":"Spring Data Team","indices":[123,134],"screen_name":"SpringData"}],"media":[],"tickerSymbols":[],"hashTags":[{"text":"MongoDB","indices":[40,48]},{"text":"jpa","indices":[102,106]},{"text":"neo4j","indices":[107,113]}]},"user":{"id":1539690888,"screenName":"BestNoSQL","name":"BestNoSQL","url":null,"profileImageUrl":"http://a0.twimg.com/profile_images/378800000031408762/3bb3d5ab19f3ede4676764115b85d7e2_normal.jpeg","description":"Two NoSQL tweets each day - mainly from StackOverflow. Created and maintained by @baeldung.","location":"","createdDate":1371943777000,"language":"en","statusesCount":99,"friendsCount":52,"followersCount":82,"favoritesCount":0,"listedCount":4,"following":false,"followRequestSent":false,"notificationsEnabled":false,"verified":false,"geoEnabled":false,"contributorsEnabled":false,"translator":false,"timeZone":"Baghdad","utcOffset":10800,"sidebarBorderColor":"C0DEED","sidebarFillColor":"DDEEF6","backgroundColor":"C0DEED","backgroundImageUrl":"http://a0.twimg.com/images/themes/theme1/bg.png","backgroundImageTiled":false,"textColor":"333333","linkColor":"0084B4","protected":false,"profileUrl":"http://twitter.com/BestNoSQL"},"retweet":false} +{"id":365201363833069568,"text":"Sprind Data \"Babbage\" RC1 released with #MongoDB aggregation framework support https://t.co/5JQxoq7b3m #jpa #neo4j congrats @SpringData team!","createdAt":1375905764000,"fromUser":"BestNoSQL","profileImageUrl":"https://a0.twimg.com/profile_images/378800000031408762/3bb3d5ab19f3ede4676764115b85d7e2_normal.jpeg","toUserId":0,"inReplyToStatusId":null,"inReplyToUserId":null,"inReplyToScreenName":"null","fromUserId":1539690888,"languageCode":"en","source":"BestNoSQL","retweetCount":0,"retweeted":false,"retweetedStatus":null,"favorited":false,"entities":{"urls":[{"url":"https://t.co/5JQxoq7b3m","indices":[79,101],"displayUrl":"bit.ly/17vyM4T","expandedUrl":"https://bit.ly/17vyM4T"}],"mentions":[{"id":224151453,"name":"Spring Data Team","indices":[123,134],"screen_name":"SpringData"}],"media":[],"tickerSymbols":[],"hashTags":[{"text":"MongoDB","indices":[40,48]},{"text":"jpa","indices":[102,106]},{"text":"neo4j","indices":[107,113]}]},"user":{"id":1539690888,"screenName":"BestNoSQL","name":"BestNoSQL","url":null,"profileImageUrl":"https://a0.twimg.com/profile_images/378800000031408762/3bb3d5ab19f3ede4676764115b85d7e2_normal.jpeg","description":"Two NoSQL tweets each day - mainly from StackOverflow. Created and maintained by @baeldung.","location":"","createdDate":1371943777000,"language":"en","statusesCount":99,"friendsCount":52,"followersCount":82,"favoritesCount":0,"listedCount":4,"following":false,"followRequestSent":false,"notificationsEnabled":false,"verified":false,"geoEnabled":false,"contributorsEnabled":false,"translator":false,"timeZone":"Baghdad","utcOffset":10800,"sidebarBorderColor":"C0DEED","sidebarFillColor":"DDEEF6","backgroundColor":"C0DEED","backgroundImageUrl":"https://a0.twimg.com/images/themes/theme1/bg.png","backgroundImageTiled":false,"textColor":"333333","linkColor":"0084B4","protected":false,"profileUrl":"https://twitter.com/BestNoSQL"},"retweet":false} diff --git a/spring-xd-yarn/site/config/servers.yml b/spring-xd-yarn/site/config/servers.yml index 132424640..b43177946 100644 --- a/spring-xd-yarn/site/config/servers.yml +++ b/spring-xd-yarn/site/config/servers.yml @@ -138,7 +138,7 @@ xd: # Upper case only. # Note: MANUAL requires specialized code in the consuming module and is unlikely to be # used in an XD application. For more information, see - # http://docs.spring.io/spring-integration/reference/html/amqp.html#amqp-inbound-ack + # https://docs.spring.io/spring-integration/reference/html/amqp.html#amqp-inbound-ack # autoBindDLQ: false # backOffInitialInterval: 1000 # backOffMaxInterval: 10000 diff --git a/src/api/overview.html b/src/api/overview.html index d9896f496..9c9ebd47a 100644 --- a/src/api/overview.html +++ b/src/api/overview.html @@ -5,7 +5,7 @@

For further API reference and developer documentation, see the - Spring + Spring XD reference documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, diff --git a/src/docs/asciidoc/Analytics.asciidoc b/src/docs/asciidoc/Analytics.asciidoc index cdf1e8645..21b2d90f7 100644 --- a/src/docs/asciidoc/Analytics.asciidoc +++ b/src/docs/asciidoc/Analytics.asciidoc @@ -9,7 +9,7 @@ Spring XD provides support for the real-time evaluation of various machine learn Spring XD's support for implementing predictive analytics by scoring analytical models that leverage machine learning algorithms begins with an extensible class library foundation upon which implementations can be built, such as the https://github.com/spring-projects/spring-xd-modules/tree/master/analytics-ml-pmml[PMML Module] that we describe here. -That module integrates with the https://github.com/jpmml/jpmml-evaluator[JPMML-Evaluator] library that provides support for a wide range of https://github.com/jpmml/jpmml-evaluator#features[model types] and is interoperable with models exported from http://www.r-project.org/[R], http://rattle.togaware.com/[Rattle], http://www.knime.org/[KNIME], and http://rapid-i.com/content/view/181/190/[RapidMiner]. For counter and gauge analytics, in-memory and http://redis.io/[Redis] implementations are provided. +That module integrates with the https://github.com/jpmml/jpmml-evaluator[JPMML-Evaluator] library that provides support for a wide range of https://github.com/jpmml/jpmml-evaluator#features[model types] and is interoperable with models exported from https://www.r-project.org/[R], https://rattle.togaware.com/[Rattle], https://www.knime.org/[KNIME], and https://rapid-i.com/content/view/181/190/[RapidMiner]. For counter and gauge analytics, in-memory and https://redis.io/[Redis] implementations are provided. Incorporating the evaluation of machine learning algorithms into stream processing is as easy as using any other processing module. Here is a simple example @@ -60,13 +60,13 @@ The main interface for integrating analytical models is *Analytic*. Some analyti models need to adjust the domain input and the model output in some way, therefore we provide a special base class *MappedAnalytic* which has core abstractions for implementing that mapping via *InputMapper* and *OutputMapper*. -Since *Spring XD 1.0.0.M6* we support the integration of analytical models, also called statistical models or mining models, that are defined via http://en.wikipedia.org/wiki/Predictive_Model_Markup_Language[*PMML*]. +Since *Spring XD 1.0.0.M6* we support the integration of analytical models, also called statistical models or mining models, that are defined via https://en.wikipedia.org/wiki/Predictive_Model_Markup_Language[*PMML*]. *PMML* is the abbreviation for *Predictive Model Markup Language* and is a standard XML representation that allows specifications of different mining models, their ensembles, and associated preprocessing. [NOTE] ===================================================================== *PMML* is maintained by the *Data Mining Group* (*DMG*) and supported by several state-of-the-art statistics and data mining software tools such as InfoSphere Warehouse, R / Rattle, SAS Enterprise Miner, SPSS®, and Weka. -The current version of the *PMML* specification is http://www.dmg.org/v4-2/GeneralStructure.html[*4.2*] at the time of this writing. +The current version of the *PMML* specification is http://dmg.org/v4-2/GeneralStructure.html[*4.2*] at the time of this writing. Applications can produce and consume *PMML* models, thus allowing an analytical model created in one application to be implemented and used for scoring or prediction in another. ===================================================================== @@ -78,10 +78,10 @@ In order to implement those models in a business application they are usually tr This model is then loaded into the application which then evaluates it against a given input (event, tuple, example). ==== Modeling -Analytical models can be defined in various ways. For the sake of brevity we use *R* from the http://www.r-project.org[*r-project*] to demonstrate +Analytical models can be defined in various ways. For the sake of brevity we use *R* from the https://www.r-project.org[*r-project*] to demonstrate how easy it is to export an analytical model to *PMML* and use it later in stream processing. -For our example we use the http://en.wikipedia.org/wiki/Iris_flower_data_set[*iris*] example dataset in *R* to generate a classifier for iris flower species by applying the http://en.wikipedia.org/wiki/Naive_Bayes_classifier[*Naive Bayes*] algorithm. +For our example we use the https://en.wikipedia.org/wiki/Iris_flower_data_set[*iris*] example dataset in *R* to generate a classifier for iris flower species by applying the https://en.wikipedia.org/wiki/Naive_Bayes_classifier[*Naive Bayes*] algorithm. [source,r] ---- @@ -127,7 +127,7 @@ The r script above should produce the following *PMML* document that contains th from the training dataset of the IRIS dataset. [source, xml] ---- - +

@@ -286,7 +286,7 @@ xd:>stream create --name iris-flower-classification --outputFieldMapping='Predicted_Species:predictedSpecies' | log" --deploy ---- -* The *location* parameter can be used to specify the exact location of the pmml document. The value must be a valid spring http://www.springindepth.com/2.5.x/0.10/ch05.html[*resource*] location +* The *location* parameter can be used to specify the exact location of the pmml document. The value must be a valid spring https://www.springindepth.com/2.5.x/0.10/ch05.html[*resource*] location * The *inputFieldMapping* parameter defines a mapping of domain input fields to model input fields. It is just a list of fields or optional field:alias mappings to control which fields and how they are going to end up in the model-input. If no inputFieldMapping is defined then all domain input fields are used as model input. + * The *outputFieldMapping* parameter defines a mapping of model output fields to domain output fields with semantics analog to the inputFieldMapping. + * The optional *modelName* parameter of the analytic-pmml module can be used to refer to a particular named model within the PMML definition. If modelName is not defined the first model is selected by default. + diff --git a/src/docs/asciidoc/Application-Configuration.asciidoc b/src/docs/asciidoc/Application-Configuration.asciidoc index 2f864d6da..cafe8af55 100644 --- a/src/docs/asciidoc/Application-Configuration.asciidoc +++ b/src/docs/asciidoc/Application-Configuration.asciidoc @@ -5,7 +5,7 @@ There are two main parts of Spring XD that can be configured, servers and modules. -The servers (`xd-singlenode`, `xd-admin`, `xd-container`) are http://projects.spring.io/spring-boot/[Spring Boot] applications and are configured as described in the http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/[Spring Boot Reference documentation]. In the most simple case this means editing values in the YAML based configuration file `servers.yml`. The values in this configuration file will overwrite the values in the default https://github.com/spring-projects/spring-xd/blob/master/spring-xd-dirt/src/main/resources/application.yml[application.yml] file that is embedded in the XD jar. +The servers (`xd-singlenode`, `xd-admin`, `xd-container`) are https://projects.spring.io/spring-boot/[Spring Boot] applications and are configured as described in the https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/[Spring Boot Reference documentation]. In the most simple case this means editing values in the YAML based configuration file `servers.yml`. The values in this configuration file will overwrite the values in the default https://github.com/spring-projects/spring-xd/blob/master/spring-xd-dirt/src/main/resources/application.yml[application.yml] file that is embedded in the XD jar. NOTE: The use of YAML is an alternative to using property files. YAML is a superset of JSON, and as such is a very convenient format for specifying hierarchical configuration data. @@ -19,7 +19,7 @@ In this section we will walk though how to configure servers and modules. The startup scripts for `xd-singlenode`, `xd-admin`, and `xd-container` will by default look for the file `$XD_HOME\config\servers.yml` as a source of externalized configuration information. -The location and name of this resourse can be changed by using the environment variables `XD_CONFIG_LOCATION` and `XD_CONFIG_NAME`. The start up script takes the value of these environment variables to set the Spring Boot properties `spring.config.location` and `spring.config.name`. Note, that for `XD_CONFIG_LOCATION` you can reference any http://docs.spring.io/spring/docs/4.0.3.RELEASE/spring-framework-reference/htmlsingle/#resources[Spring Resource] implementation, most commonly denoted using the prefixes `classpath:`, `file:` and `http:`. +The location and name of this resourse can be changed by using the environment variables `XD_CONFIG_LOCATION` and `XD_CONFIG_NAME`. The start up script takes the value of these environment variables to set the Spring Boot properties `spring.config.location` and `spring.config.name`. Note, that for `XD_CONFIG_LOCATION` you can reference any https://docs.spring.io/spring/docs/4.0.3.RELEASE/spring-framework-reference/htmlsingle/#resources[Spring Resource] implementation, most commonly denoted using the prefixes `classpath:`, `file:` and `http:`. It is common to keep your server configuration separate form the installation directory of XD itself. To do this, here is an example environment variable setting @@ -39,7 +39,7 @@ To activate a profile, set the OS environment variable `SPRING_PROFILES_ACTIVE` . `XD_CONFIG_LOCATION/servers-prod.yml` . `XD_CONFIG_LOCATION/servers.yml` -You may also put multiple profile specific configuration in a single `servers.yml` file by using the key `spring.profiles` in different sections of the configuration file. See http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#boot-features-external-config-multi-profile-yaml[Multi-profile YAML documents] for more information. +You may also put multiple profile specific configuration in a single `servers.yml` file by using the key `spring.profiles` in different sections of the configuration file. See https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#boot-features-external-config-multi-profile-yaml[Multi-profile YAML documents] for more information. ==== Database Configuration @@ -285,7 +285,7 @@ In addition, the following default settings for the rabbit message bus can be mo If you expect headers longer than this, increase this setting appropriately if you wish them to pass to downstream modules. -<3> AUTO (container acks), NONE (broker acks), MANUAL (consumer acks). Upper case only. Note: MANUAL requires specialized code in the consuming module and is unlikely to be used in an XD application. For more information, see http://docs.spring.io/spring-integration/reference/html/amqp.html#amqp-inbound-ack +<3> AUTO (container acks), NONE (broker acks), MANUAL (consumer acks). Upper case only. Note: MANUAL requires specialized code in the consuming module and is unlikely to be used in an XD application. For more information, see https://docs.spring.io/spring-integration/reference/html/amqp.html#amqp-inbound-ack <4> When true, the bus will automatically declare dead letter queues and binding for each bus queue. The user is responsible for setting a policy on the broker to enable dead-lettering; see xref:MessageBus#error-handling-message-delivery-failures[Message Bus Configuration] for more information. The bus will configure a dead-letter-exchange (`DLX`) and bind a queue with the name `.dlq` and route using the original queue name @@ -469,7 +469,7 @@ server: ==== Management Port -The XD servers provide general http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-endpoints[health] and JMX exported http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-jolokia[management] endpoints via Jolokia. +The XD servers provide general https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-endpoints[health] and JMX exported https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-jolokia[management] endpoints via Jolokia. By default the management and health endpoints are available on port 9393. To change the value of the port use the following configuration setting to `servers.yml`. @@ -483,7 +483,7 @@ You can also disable http management endpoints by setting the port value to -1. By default JMX MBeans are exported. You can disable JMX by setting `spring.jmx.enabled=false`. -The section on http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-monitoring[Monitoring and management over HTTP] provides details on how to configure these endpoint. +The section on https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-monitoring[Monitoring and management over HTTP] provides details on how to configure these endpoint. ==== Admin Server Security @@ -589,7 +589,7 @@ security: <1> The username for authentication (must be used by REST clients and in the Admin UI). Will default to `user` if not explicitly set. -<2> The password for authentication (must be used by REST clients and in the Admin UI). If not explicitly set, it will be auto-generated, as described in the http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#boot-features-security[Spring Boot] documentation. +<2> The password for authentication (must be used by REST clients and in the Admin UI). If not explicitly set, it will be auto-generated, as described in the https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#boot-features-security[Spring Boot] documentation. [[enabling-ldap-authentication]] ====== LDAP authentication @@ -784,7 +784,7 @@ where * HTTP_METHOD is one http method, capital case * URL_PATTERN is an Ant style URL pattern -* SECURITY_ATTRIBUTE is a SpEL expression (see http://docs.spring.io/spring-security/site/docs/4.0.0.M2/reference/htmlsingle/#el-access) +* SECURITY_ATTRIBUTE is a SpEL expression (see https://docs.spring.io/spring-security/site/docs/4.0.0.M2/reference/htmlsingle/#el-access) * each of those separated by one or several blank characters (spaces, tabs, _etc._) Be mindful that the above is indeed a YAML list, not a map (thus the use of '-' dashes at the start of each line) that lives under the `security.authorization.rules` key. @@ -829,7 +829,7 @@ Under the hood the value will set the CORS `Access-Control-Allow-Origin` header ==== Local transport -Local transport uses a http://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/channel/QueueChannel.html[QueueChannel] to pass data between modules. There are a few properties you can configure on the QueueChannel +Local transport uses a https://docs.spring.io/spring-integration/docs/latest-ga/api/org/springframework/integration/channel/QueueChannel.html[QueueChannel] to pass data between modules. There are a few properties you can configure on the QueueChannel * `xd.local.transport.named.queueSize` - The capacity of the queue, the default value is `Integer.MAX_VALUE` * `xd.local.transport.named.polling` - Messages that are buffered in a QueueChannel need to be polled to be consumed. This property controls the fixed rate at which polling occurs. The default value is 1000 ms. @@ -843,7 +843,7 @@ detailed discussion of configuration options. Modules are configured by placing property files in a nested directory structure based on their type and name. The root of the nested directory structure is by default `XD_HOME/config/modules`. This location can be customized by setting the OS environment variable `XD_MODULE_CONFIG_LOCATION`, similar to how the environment variable `XD_CONFIG_LOCATION` is used for configuring the server. If `XD_MODULE_CONFIG_LOCATION` is set explicitly, then it is **necessary** to add the file path separator ("/") at the end of the path. -NOTE: If `XD_MODULE_CONFIG_LOCATION` is set to use explicit location, make sure to copy entire directory structure from the default module config location `xd/config/modules` into the new module config location. The `XD_MODULE_CONFIG_LOCATION` can reference any http://docs.spring.io/spring/docs/4.0.3.RELEASE/spring-framework-reference/htmlsingle/#resources[Spring Resource] implementation, most commonly denoted using the prefixes `classpath:`, `file:` and `http:`. +NOTE: If `XD_MODULE_CONFIG_LOCATION` is set to use explicit location, make sure to copy entire directory structure from the default module config location `xd/config/modules` into the new module config location. The `XD_MODULE_CONFIG_LOCATION` can reference any https://docs.spring.io/spring/docs/4.0.3.RELEASE/spring-framework-reference/htmlsingle/#resources[Spring Resource] implementation, most commonly denoted using the prefixes `classpath:`, `file:` and `http:`. As an example, if you wanted to configure the twittersearch module, you would create a file ---- @@ -923,7 +923,7 @@ A property file with the same keys, but likely different values would be located === Encrypted Properties If you wish encrypt passwords and other secret values stored in application configuration file, you must provide a Spring bean that implements -http://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/crypto/encrypt/TextEncryptor.html[TextEncryptor] and +https://docs.spring.io/spring-security/site/docs/current/apidocs/org/springframework/security/crypto/encrypt/TextEncryptor.html[TextEncryptor] and implement the `decrypt` method. The bean, annotated with @Component, or a @Configuration class providing the bean definition, must be present under the base package `spring.xd.ext.encryption`. @@ -934,7 +934,7 @@ https://github.com/dsyer/spring-security-rsa/blob/master/src/main/java/org/sprin Package the implementation of your choice in a jar file and install it in `xd/lib` along with any required dependencies (spring-security-core is already in the runtime classpath). Spring XD will use the TextEncryptor you provide to decrypt any properties that contain the prefix `{cipher}`. This conforms to the convention used by the -http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_encryption_and_decryption[Spring Cloud Config Server]. +https://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_encryption_and_decryption[Spring Cloud Config Server]. For example: diff --git a/src/docs/asciidoc/Architecture.asciidoc b/src/docs/asciidoc/Architecture.asciidoc index eee74dd79..e5ae16b36 100644 --- a/src/docs/asciidoc/Architecture.asciidoc +++ b/src/docs/asciidoc/Architecture.asciidoc @@ -38,7 +38,7 @@ image::images/local-mode.png[width=500] [[admin-server-arch]] ==== Admin Server Architecture -The Admin Server uses an embedded servlet container and exposes REST endpoints for creating, deploying, undeploying, and destroying streams and jobs, querying runtime state, analytics, and the like. The Admin Server is implemented using Spring's MVC framework and the https://github.com/SpringSource/spring-hateoas[Spring HATEOAS] library to create REST representations that follow the http://en.wikipedia.org/wiki/HATEOAS[HATEOAS] principle. The Admin Server and Container Servers monitor and update runtime state using ZooKeeper (see xref:XD-Distributed-Runtime#xd-distributed-runtime[XD Distributed Runtime]). +The Admin Server uses an embedded servlet container and exposes REST endpoints for creating, deploying, undeploying, and destroying streams and jobs, querying runtime state, analytics, and the like. The Admin Server is implemented using Spring's MVC framework and the https://github.com/SpringSource/spring-hateoas[Spring HATEOAS] library to create REST representations that follow the https://en.wikipedia.org/wiki/HATEOAS[HATEOAS] principle. The Admin Server and Container Servers monitor and update runtime state using ZooKeeper (see xref:XD-Distributed-Runtime#xd-distributed-runtime[XD Distributed Runtime]). [[container-server-arch]] @@ -64,7 +64,7 @@ image::images/tap-jobs-streams.png[width=500] [[architecture_streams]] ==== Streams -The programming model for processing event streams in Spring XD is based on the well known http://www.eaipatterns.com/[Enterprise Integration Patterns] as implemented by components in the http://www.springsource.org/spring-integration[Spring Integration] project. The programming model was designed so that it is easy to test components. +The programming model for processing event streams in Spring XD is based on the well known https://www.enterpriseintegrationpatterns.com/[Enterprise Integration Patterns] as implemented by components in the https://www.springsource.org/spring-integration[Spring Integration] project. The programming model was designed so that it is easy to test components. A Stream consist of the following types of modules: * An Input source diff --git a/src/docs/asciidoc/Batch-Jobs.asciidoc b/src/docs/asciidoc/Batch-Jobs.asciidoc index 58750bee8..7f315342e 100644 --- a/src/docs/asciidoc/Batch-Jobs.asciidoc +++ b/src/docs/asciidoc/Batch-Jobs.asciidoc @@ -3,7 +3,7 @@ === Introduction -One of the features that XD offers is the ability to launch and monitor batch jobs based on http://www.springsource.org/spring-batch[Spring Batch]. The Spring Batch project was started in 2007 as a collaboration between SpringSource and Accenture to provide a comprehensive framework to support the development of robust batch applications. Batch jobs have their own set of best practices and domain concepts which have been incorporated into Spring Batch building upon Accenture's consulting business. Since then Spring Batch has been used in thousands of enterprise applications and is the basis for the recent JSR standardization of batch processing, https://jcp.org/en/jsr/detail?id=352[JSR-352]. +One of the features that XD offers is the ability to launch and monitor batch jobs based on https://www.springsource.org/spring-batch[Spring Batch]. The Spring Batch project was started in 2007 as a collaboration between SpringSource and Accenture to provide a comprehensive framework to support the development of robust batch applications. Batch jobs have their own set of best practices and domain concepts which have been incorporated into Spring Batch building upon Accenture's consulting business. Since then Spring Batch has been used in thousands of enterprise applications and is the basis for the recent JSR standardization of batch processing, https://jcp.org/en/jsr/detail?id=352[JSR-352]. Spring XD builds upon Spring Batch to simplify creating batch workflow solutions that span traditional use-cases such as moving data between flat files and relational databases as well as Hadoop use-cases where analysis logic is broken up into several steps that run on a Hadoop cluster. Steps specific to Hadoop in a workflow can be MapReduce jobs, executing Hive/Pig scripts or HDFS operations. Spring XD ships with a number of useful xref:Jobs#jobs[job modules out of the box]. This section presents an overview for creating, deploying, and running batch jobs. @@ -58,15 +58,15 @@ Create a *Job Definition* from a _Job Module_ by providing a definition name as ==== Deploy the Job -Deploy the *Job Definition* to one or more _Spring XD_ containers. This will initialize the _Job Definitions_ on those containers. The jobs are now "live" and a job can be created by sending a message to a job queue that contains optional runtime *http://docs.spring.io/spring-batch/trunk/reference/html/domain.html#domainJobParameters[Job Parameters]*. +Deploy the *Job Definition* to one or more _Spring XD_ containers. This will initialize the _Job Definitions_ on those containers. The jobs are now "live" and a job can be created by sending a message to a job queue that contains optional runtime *https://docs.spring.io/spring-batch/trunk/reference/html/domain.html#domainJobParameters[Job Parameters]*. ==== Launch a Job -Launch a job by sending a message to the job queue with *http://docs.spring.io/spring-batch/trunk/reference/html/domain.html#domainJobParameters[Job Parameters]*. A *http://docs.spring.io/spring-batch/trunk/reference/html/domain.html#domainJobInstance[Job Instance]* is created, representing a specific run of the job. A *Job Instance* is the *Job Definition* plus the runtime *Job Parameters*. You can query for the *Job Instances* associated with a given job name. +Launch a job by sending a message to the job queue with *https://docs.spring.io/spring-batch/trunk/reference/html/domain.html#domainJobParameters[Job Parameters]*. A *https://docs.spring.io/spring-batch/trunk/reference/html/domain.html#domainJobInstance[Job Instance]* is created, representing a specific run of the job. A *Job Instance* is the *Job Definition* plus the runtime *Job Parameters*. You can query for the *Job Instances* associated with a given job name. ==== Job Execution -The job is executed creating a *http://docs.spring.io/spring-batch/trunk/reference/html/domain.html#domainJobExecution[Job Execution]* object that captures the success or failure of the job. You can query for *Job Executions* associated with a given job name. +The job is executed creating a *https://docs.spring.io/spring-batch/trunk/reference/html/domain.html#domainJobExecution[Job Execution]* object that captures the success or failure of the job. You can query for *Job Executions* associated with a given job name. ==== Un-deploy a Job @@ -114,7 +114,7 @@ The above deployment manifest would deploy 3 number of `fooJob` modules into con When a batch job is launched/scheduled, the job module that picks up the job launching request message executes the batch job. To support partitioning of the job across multiple containers, the job definition needs to define how the job will be partitioned. The type of partitioning depends on the type of the job, for example a job reading from JDBC would partition the data in a table by dividing up the number of rows and a job reading files form a directory would partition on the number of files available. -The FTP to HDFS and FILE to JDBC jobs support for partitioning. To add partitioning support for your own jobs you should import https://github.com/spring-projects/spring-xd/blob/master/spring-xd-dirt/src/main/resources/META-INF/spring-xd/batch/singlestep-partition-support.xml[singlestep-partition-support.xml] in your job definition. This provides the infrastructure so that the job module that processes the launch request can communicate as the master with the other job modules that have been deployed. You will also need to provide an implementation of the http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/partition/support/Partitioner.html[Partitioner] interface. +The FTP to HDFS and FILE to JDBC jobs support for partitioning. To add partitioning support for your own jobs you should import https://github.com/spring-projects/spring-xd/blob/master/spring-xd-dirt/src/main/resources/META-INF/spring-xd/batch/singlestep-partition-support.xml[singlestep-partition-support.xml] in your job definition. This provides the infrastructure so that the job module that processes the launch request can communicate as the master with the other job modules that have been deployed. You will also need to provide an implementation of the https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/partition/support/Partitioner.html[Partitioner] interface. For more information on the deployment manifest, please refer https://github.com/spring-projects/spring-xd/wiki/XD-Distributed-Runtime#deployment-manifest[here] diff --git a/src/docs/asciidoc/Building-Spring-XD.asciidoc b/src/docs/asciidoc/Building-Spring-XD.asciidoc index 08bbe52da..ec0ca3272 100644 --- a/src/docs/asciidoc/Building-Spring-XD.asciidoc +++ b/src/docs/asciidoc/Building-Spring-XD.asciidoc @@ -7,10 +7,10 @@ Here are some useful steps to build and run Spring XD. [WARNING] ==== -Please ensure that you provide as a minimum _6GB of available RAM_ for a full build. The executed integration tests use several embedded services such as http://kafka.apache.org/[Apache Kafka], http://zookeeper.apache.org/[Apache ZooKeeper] and http://hadoop.apache.org/[Apache Hadoop] which contribute to the high resource usage. +Please ensure that you provide as a minimum _6GB of available RAM_ for a full build. The executed integration tests use several embedded services such as https://kafka.apache.org/[Apache Kafka], https://zookeeper.apache.org/[Apache ZooKeeper] and https://hadoop.apache.org/[Apache Hadoop] which contribute to the high resource usage. ==== -To build all sub-projects and run tests for Spring XD (please note tests require a running http://redis.io/[Redis] instance): +To build all sub-projects and run tests for Spring XD (please note tests require a running https://redis.io/[Redis] instance): ---- ./gradlew build diff --git a/src/docs/asciidoc/Configuration-Guidelines-Overview.asciidoc b/src/docs/asciidoc/Configuration-Guidelines-Overview.asciidoc index 8cc30e297..4058cb0b3 100644 --- a/src/docs/asciidoc/Configuration-Guidelines-Overview.asciidoc +++ b/src/docs/asciidoc/Configuration-Guidelines-Overview.asciidoc @@ -8,7 +8,7 @@ Another relevant topic for minimizing network hops is the ability to __compose__ For production use, high availability will typically be a requirement for the data transport. In the xref:MessageBus#messagebus[Message Bus Configuration] section below, we provide details on the relevant xref:MessageBus#rabbit-message-bus-high-availability-ha-configuration[HA configuration] settings as well as other reliability settings, security settings (including xref:MessageBus#rabbitssl[enabling SSL]), and xref:MessageBus#error-handling-message-delivery-failures[error-handling] capabilities. -When configuring a RabbitMQ Message Bus, you will also want to consider several performance settings. For example, unless strict sequential ordering is required, the __prefetch__ and __concurrency__ values should be overridden (the default for each is 1). That can lead to a significant performance improvement. In the less likely case that performance concerns completely outweigh reliability, you can disable acknowledgements and even disable the persistence of messages. For a listing of these settings and more, refer to the xref:Application-Configuration#rabbitmq-configuration[RabbitMQ Configuration] section. Several performance related configuration settings exist on the broker itself, and those are well-documented in the link:http://www.rabbitmq.com/admin-guide.html[RabbitMQ Admin Guide]. For example, the __vm_memory_high_watermark__ and __vm_memory_high_watermark_paging_ratio__ are both explained within the link:http://www.rabbitmq.com/memory.html[Flow Control] subsection of the guide. +When configuring a RabbitMQ Message Bus, you will also want to consider several performance settings. For example, unless strict sequential ordering is required, the __prefetch__ and __concurrency__ values should be overridden (the default for each is 1). That can lead to a significant performance improvement. In the less likely case that performance concerns completely outweigh reliability, you can disable acknowledgements and even disable the persistence of messages. For a listing of these settings and more, refer to the xref:Application-Configuration#rabbitmq-configuration[RabbitMQ Configuration] section. Several performance related configuration settings exist on the broker itself, and those are well-documented in the link:https://www.rabbitmq.com/admin-guide.html[RabbitMQ Admin Guide]. For example, the __vm_memory_high_watermark__ and __vm_memory_high_watermark_paging_ratio__ are both explained within the link:https://www.rabbitmq.com/memory.html[Flow Control] subsection of the guide. If you are using the HTTP source module in a stream and want to scale, you can deploy multiple instances by specifying the __module.http.count__ property as described in the xref:Deployment#deployment-properties[Deployment Properties] section. Keep in mind that each instance will share the same port value. The default is 9000, but that can be overridden, for all instances, by including __--port__ as an option for the HTTP module in the stream definition. That means you would want to ensure that each container that may be a candidate for deploying one of the HTTP module instances (taking into account the __criteria__ deployment property if provided), is running on a different host, either physically or on separate virtual machines. Of course, in a production environment, you would likely want to add a load balancer in front of those HTTP endpoints. diff --git a/src/docs/asciidoc/Counters-and-Gauges.asciidoc b/src/docs/asciidoc/Counters-and-Gauges.asciidoc index 24d8cdc4d..610fbce6f 100644 --- a/src/docs/asciidoc/Counters-and-Gauges.asciidoc +++ b/src/docs/asciidoc/Counters-and-Gauges.asciidoc @@ -205,7 +205,7 @@ $$name$$:: $$the name of the metric to contribute to (will be created if necessa $$nameExpression$$:: $$a SpEL expression to compute the name of the metric to contribute to$$ *($$String$$, no default)* //$sink.rich-gauge -NOTE: The smoothing factor behaves as an http://en.wikipedia.org/wiki/Exponential_smoothing[exponential moving average]. The default value does no smoothing. +NOTE: The smoothing factor behaves as an https://en.wikipedia.org/wiki/Exponential_smoothing[exponential moving average]. The default value does no smoothing. Here are some examples of creating a tap for a rich gauge: diff --git a/src/docs/asciidoc/Creating-a-Data-Stream-Processor-Module.asciidoc b/src/docs/asciidoc/Creating-a-Data-Stream-Processor-Module.asciidoc index 72f0da0cd..94f3c4d35 100644 --- a/src/docs/asciidoc/Creating-a-Data-Stream-Processor-Module.asciidoc +++ b/src/docs/asciidoc/Creating-a-Data-Stream-Processor-Module.asciidoc @@ -6,10 +6,10 @@ This section covers how to create a processor module that uses stream processing [[reactor-streams]] === Reactor Streams -https://github.com/reactor/reactor[Project Reactor] provides a https://reactor.github.io/docs/api/2.0.2.RELEASE/reactor/rx/Stream.html[Stream API] that is based on the http://www.reactive-streams.org/[Reactive Streams specification]. The specification was jointly developed by twenty people from a dozen companies (Pivotal included) and has the goal of creating a standard for asynchronous stream processing with non-blocking back pressure on the JVM. +https://github.com/reactor/reactor[Project Reactor] provides a https://reactor.github.io/docs/api/2.0.2.RELEASE/reactor/rx/Stream.html[Stream API] that is based on the https://www.reactive-streams.org/[Reactive Streams specification]. The specification was jointly developed by twenty people from a dozen companies (Pivotal included) and has the goal of creating a standard for asynchronous stream processing with non-blocking back pressure on the JVM. [TIP] -Explore Reactor with http://projectreactor.io/docs/reference/[the reference guide]. +Explore Reactor with https://projectreactor.io/docs/reference/[the reference guide]. To implement a Stream based processor module you need to implement the interface `org.springframework.xd.reactor.Processor` @@ -60,9 +60,9 @@ You can now create unit tests for the Processor module just as you would for any xmlns:int="http://www.springframework.org/schema/integration" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/integration - http://www.springframework.org/schema/integration/spring-integration.xsd + https://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans.xsd"> + https://www.springframework.org/schema/beans/spring-beans.xsd"> @@ -87,7 +87,7 @@ Examples of unit and integration testing a module are available in the https://g [[rxjava-streams]] === RxJava Streams -RxJava provides the http://reactivex.io/RxJava/javadoc/rx/Observable.html[Observable API] that is based on the http://msdn.microsoft.com/en-us/data/gg577609.aspx[Reactive Extensions .NET library]. +RxJava provides the http://reactivex.io/RxJava/javadoc/rx/Observable.html[Observable API] that is based on the https://msdn.microsoft.com/en-us/data/gg577609.aspx[Reactive Extensions .NET library]. To implement a Observable based XD processor module you need to implement the interface `org.springframework.xd.rxjava.Processor` @@ -149,9 +149,9 @@ You can now create unit tests for the Processor module as you would for any othe xmlns:int="http://www.springframework.org/schema/integration" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/integration - http://www.springframework.org/schema/integration/spring-integration.xsd + https://www.springframework.org/schema/integration/spring-integration.xsd http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans.xsd"> + https://www.springframework.org/schema/beans/spring-beans.xsd"> diff --git a/src/docs/asciidoc/Creating-a-Job-Module.asciidoc b/src/docs/asciidoc/Creating-a-Job-Module.asciidoc index 62c80b735..e2fc87b52 100644 --- a/src/docs/asciidoc/Creating-a-Job-Module.asciidoc +++ b/src/docs/asciidoc/Creating-a-Job-Module.asciidoc @@ -8,14 +8,14 @@ As outlined in the xref:Modules#modules[modules] document, XD currently supports The Job definitions provided as part of the Spring XD distribution as well as those included in the https://github.com/spring-projects/spring-xd-samples[Spring XD Samples] repository can be used a basis for building your own custom Jobs. The development of a Job largely follows the development of a Spring Batch job, for which there are several references. -* http://projects.spring.io/spring-batch/[Spring Batch home page] -* http://www.manning.com/templier/[Spring Batch In Action - Manning] -* http://www.apress.com/9781430234524[Pro Spring Batch - APress] +* https://projects.spring.io/spring-batch/[Spring Batch home page] +* https://www.manning.com/templier/[Spring Batch In Action - Manning] +* https://www.apress.com/9781430234524[Pro Spring Batch - APress] For help developing Job steps specific to Hadoop, e.g. HDFS, Pig, Hive, the https://github.com/spring-projects/spring-xd-samples[Spring XD Samples] is useful as well as the following resources -* http://projects.spring.io/spring-hadoop/[Spring for Apache Hadoop home page] -* http://shop.oreilly.com/product/0636920024767.do[Spring Data - O'Reilly - Chapter 13] +* https://projects.spring.io/spring-hadoop/[Spring for Apache Hadoop home page] +* https://shop.oreilly.com/product/0636920024767.do[Spring Data - O'Reilly - Chapter 13] === Creating a Simple Job @@ -31,7 +31,7 @@ First create a java project for your module, named 'batch-simple' in your favori ==== Create the Spring Batch Job Definition -Create a The https://github.com/spring-projects/spring-xd-samples/blob/master/batch-simple/src/main/resources/config/spring-module.xml[job definition] file in `src\main\resources\config`. In this case, we use a custom http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/step/tasklet/Tasklet.html[Tasklet]. In this example there is only one step and it simply prints out the job parameters. +Create a The https://github.com/spring-projects/spring-xd-samples/blob/master/batch-simple/src/main/resources/config/spring-module.xml[job definition] file in `src\main\resources\config`. In this case, we use a custom https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/step/tasklet/Tasklet.html[Tasklet]. In this example there is only one step and it simply prints out the job parameters. [source,xml] ---- @@ -53,7 +53,7 @@ Create a The https://github.com/spring-projects/spring-xd-samples/blob/master/ba ==== Write the Tasklet -Write a https://github.com/spring-projects/spring-xd-samples/blob/master/batch-simple/src/main/java/org/springframework/springxd/samples/batch/HelloSpringXDTasklet.java[HelloSpringXDTasklet] java class that implements http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/step/tasklet/Tasklet.html[Tasklet]. This will retrieve the job parameters and print them to `stdout`. +Write a https://github.com/spring-projects/spring-xd-samples/blob/master/batch-simple/src/main/java/org/springframework/springxd/samples/batch/HelloSpringXDTasklet.java[HelloSpringXDTasklet] java class that implements https://docs.spring.io/spring-batch/apidocs/org/springframework/batch/core/step/tasklet/Tasklet.html[Tasklet]. This will retrieve the job parameters and print them to `stdout`. [source, java] ---- @@ -175,9 +175,9 @@ To create a job in the XD shell, execute the `job create` command specifying: * name - the "name" that will be associated with the Job * definition - the name of the job module -Often a batch job will involve reading batches of data from a source, tranforming or processing that data and then wrting the batch of data to a destination. This kind of flow is implemented using http://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#chunkOrientedProcessing[Chunk-oriented processing], represented in the job configuration using the `` element containing `reader`, `writer` and optional `processor` elements. Other attributes define the size of the chunck and various policies for handling failure cases. +Often a batch job will involve reading batches of data from a source, tranforming or processing that data and then wrting the batch of data to a destination. This kind of flow is implemented using https://docs.spring.io/spring-batch/trunk/reference/html/configureStep.html#chunkOrientedProcessing[Chunk-oriented processing], represented in the job configuration using the `` element containing `reader`, `writer` and optional `processor` elements. Other attributes define the size of the chunck and various policies for handling failure cases. -You will usually be able to reuse existing http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/ItemReader.html[reader] and http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/ItemWriter.html[writer] implementations. The https://github.com/spring-projects/spring-xd/blob/master/modules/job/filejdbc/config/filejdbc.xml[filejdbc job] provided with the Spring XD distribution shows an example of this using the standard File reader and JDBC writer. +You will usually be able to reuse existing https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/ItemReader.html[reader] and https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/item/ItemWriter.html[writer] implementations. The https://github.com/spring-projects/spring-xd/blob/master/modules/job/filejdbc/config/filejdbc.xml[filejdbc job] provided with the Spring XD distribution shows an example of this using the standard File reader and JDBC writer. The processor is based on the ItemProcessor interface. It has a generic signature that lets you operate on a record at at time. The batch of records is handled as a collection in reader and writer implementations. In the `filejdbc` job, the reader converts input records into a xref:Tuples[Spring XD Tuple]. The tuple serves as a generic data structure but you can also use or write another converter to convert the input record to your own custom POJO object. @@ -185,10 +185,10 @@ The processor is based on the ItemProcessor interface. It has a generic signatu There are several tasklet implementation that will run various types of Hadoop Jobs -* http://docs.spring.io/spring-hadoop/docs/2.0.2.RELEASE/reference/html/hadoop.html#hadoop:tasklet[MapReduce Job] -* http://docs.spring.io/spring-hadoop/docs/2.0.2.RELEASE/reference/html/fs.html#scripting-tasklet[HDFS Scripts] -* http://docs.spring.io/spring-hadoop/docs/2.0.2.RELEASE/reference/html/hive.html#hive:tasklet[Hive Scripts] -* http://docs.spring.io/spring-hadoop/docs/2.0.2.RELEASE/reference/html/pig.html#pig:tasklet[Pig Scripts] +* https://docs.spring.io/spring-hadoop/docs/2.0.2.RELEASE/reference/html/hadoop.html#hadoop:tasklet[MapReduce Job] +* https://docs.spring.io/spring-hadoop/docs/2.0.2.RELEASE/reference/html/fs.html#scripting-tasklet[HDFS Scripts] +* https://docs.spring.io/spring-hadoop/docs/2.0.2.RELEASE/reference/html/hive.html#hive:tasklet[Hive Scripts] +* https://docs.spring.io/spring-hadoop/docs/2.0.2.RELEASE/reference/html/pig.html#pig:tasklet[Pig Scripts] The https://github.com/spring-projects/spring-hadoop-samples[Spring Hadoop Samples] project provides examples of how to create batch jobs that orchestate various hadoop jobs at each step. You can also mix and match steps related to work that is executed on the Hadoop cluster and work that is executed on the Spring XD cluster. diff --git a/src/docs/asciidoc/Creating-a-Processor-Module.asciidoc b/src/docs/asciidoc/Creating-a-Processor-Module.asciidoc index fe1dfabe5..867d720f8 100644 --- a/src/docs/asciidoc/Creating-a-Processor-Module.asciidoc +++ b/src/docs/asciidoc/Creating-a-Processor-Module.asciidoc @@ -52,9 +52,9 @@ Create the following file as _spring-module.xml_ in the `config` resource direct xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans.xsd + https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/integration - http://www.springframework.org/schema/integration/spring-integration.xsd"> + https://www.springframework.org/schema/integration/spring-integration.xsd"> diff --git a/src/docs/asciidoc/Creating-a-Python-Module.asciidoc b/src/docs/asciidoc/Creating-a-Python-Module.asciidoc index 1fa5b1f82..56c7ad3a7 100644 --- a/src/docs/asciidoc/Creating-a-Python-Module.asciidoc +++ b/src/docs/asciidoc/Creating-a-Python-Module.asciidoc @@ -49,7 +49,7 @@ Created and deployed new stream 'pytest' Python must be installed on the host of any container to which the processor module is deployed. ==== -You should see the time messages echoed in the Spring XD container log. The shell processor works by binding its message channels to the external process' `stdin` and `stdout`. Behind the scenes, the shell modules use http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html[java.lang.ProcessBuilder] to connect to the shell process. As you can see, most of `echo.py` is boilerplate code. To make things easier, Spring XD provides a https://github.com/spring-projects/spring-xd/blob/master/spring-xd-python/src/springxd/stream.py[python module] to handle all of the low level I/O. +You should see the time messages echoed in the Spring XD container log. The shell processor works by binding its message channels to the external process' `stdin` and `stdout`. Behind the scenes, the shell modules use https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html[java.lang.ProcessBuilder] to connect to the shell process. As you can see, most of `echo.py` is boilerplate code. To make things easier, Spring XD provides a https://github.com/spring-projects/spring-xd/blob/master/spring-xd-python/src/springxd/stream.py[python module] to handle all of the low level I/O. [source, python] ---- diff --git a/src/docs/asciidoc/Creating-a-Sink-Module.asciidoc b/src/docs/asciidoc/Creating-a-Sink-Module.asciidoc index 000c793a6..21221cadb 100644 --- a/src/docs/asciidoc/Creating-a-Sink-Module.asciidoc +++ b/src/docs/asciidoc/Creating-a-Sink-Module.asciidoc @@ -7,9 +7,9 @@ As outlined in the xref:Modules#modules[modules] document, Spring XD currently s The last module in a xref:Streams#streams[stream] is always a sink. A sink module is built with Spring Integration to consume messages on its _input_ channel and send them to an external resource to terminate the stream. -Spring Integration provides a number of outbound channel adapters to integrate with various transports such as TCP, AMQP, JMS, Kafka, HTTP, web services, mail, or data stores such as file, Redis, MongoDB, JDBC, Splunk, Gemfire, and more. It is straightforward to create a sink module using an existing outbound channel adapters. Such outbound channel adapters are typically used to integrate streams with external data stores or legacy systems. Alternately, you may need to invoke a third party Java API to provide data to an external system. In this case, the sink can easily invoke a Java method using a http://docs.spring.io/spring-integration/docs/latest-ga/reference/html/messaging-endpoints-chapter.html#service-activator[Service Activator]. +Spring Integration provides a number of outbound channel adapters to integrate with various transports such as TCP, AMQP, JMS, Kafka, HTTP, web services, mail, or data stores such as file, Redis, MongoDB, JDBC, Splunk, Gemfire, and more. It is straightforward to create a sink module using an existing outbound channel adapters. Such outbound channel adapters are typically used to integrate streams with external data stores or legacy systems. Alternately, you may need to invoke a third party Java API to provide data to an external system. In this case, the sink can easily invoke a Java method using a https://docs.spring.io/spring-integration/docs/latest-ga/reference/html/messaging-endpoints-chapter.html#service-activator[Service Activator]. -Here, we will demonstrate step-by-step how to create and install a sink module using the Spring Integration http://docs.spring.io/spring-integration/reference/html/redis.html#redis-store-outbound-channel-adapter[Redis Store Outbound Channel Adapter]. The complete code for this example is https://github.com/spring-projects/spring-xd-samples/tree/master/redis-store-sink[redis-store-sink] sample project. +Here, we will demonstrate step-by-step how to create and install a sink module using the Spring Integration https://docs.spring.io/spring-integration/reference/html/redis.html#redis-store-outbound-channel-adapter[Redis Store Outbound Channel Adapter]. The complete code for this example is https://github.com/spring-projects/spring-xd-samples/tree/master/redis-store-sink[redis-store-sink] sample project. === Create the module Application Context Configure the outbound channel adapter in an https://github.com/spring-projects/spring-xd-samples/blob/master/redis-store-sink/src/main/resources/config/spring-module.xml[xml bean definition] file under the `config` resource directoy: @@ -132,7 +132,7 @@ The test will load the module application context using our test context and sen The test requires a running Redis server. See xref:Getting-Started#getting-started[Getting Started] for information on installing and starting Redis. ==== Test the Module Options -Another test you may want to include is one to verify the module options metadata, as defined in _spring-module.properties_ Here is an example https://github.com/spring-projects/spring-xd-samples/blob/master/redis-store-sink/src/test/java/org/springframework/xd/samples/ModuleOptionsTest.java[ModuleOptionsTest] that uses Spring XD's http://docs.spring.io/autorepo/docs/spring-xd/current/api/org/springframework/xd/module/options/DefaultModuleOptionsMetadataResolver.html[DefaultModuleOptionsMetadataResolver] +Another test you may want to include is one to verify the module options metadata, as defined in _spring-module.properties_ Here is an example https://github.com/spring-projects/spring-xd-samples/blob/master/redis-store-sink/src/test/java/org/springframework/xd/samples/ModuleOptionsTest.java[ModuleOptionsTest] that uses Spring XD's https://docs.spring.io/autorepo/docs/spring-xd/current/api/org/springframework/xd/module/options/DefaultModuleOptionsMetadataResolver.html[DefaultModuleOptionsMetadataResolver] [source, java] ----- diff --git a/src/docs/asciidoc/Creating-a-Source-Module.asciidoc b/src/docs/asciidoc/Creating-a-Source-Module.asciidoc index 6a8f7af64..9ee02236c 100644 --- a/src/docs/asciidoc/Creating-a-Source-Module.asciidoc +++ b/src/docs/asciidoc/Creating-a-Source-Module.asciidoc @@ -9,7 +9,7 @@ The first module in a xref:Streams#streams[stream] is always a source. Source mo Spring Integration provides a number of adapters out of the box to integrate with various transports and data stores, such as JMS, File, HTTP, Web Services, Mail, and more. Typically, it is straightforward to create a source module using an existing inbound channel adapter. -Here we walk through an example demonstrating how to create and register a source module using the http://docs.spring.io/spring-integration/reference/html/feed.html#feed-inbound-channel-adapter[Spring Integration Feed Inbound Channel Adapter]. The complete code for this example is in the https://github.com/spring-projects/spring-xd-samples/blob/master/rss-feed-source/[rss-feed-source] sample project. +Here we walk through an example demonstrating how to create and register a source module using the https://docs.spring.io/spring-integration/reference/html/feed.html#feed-inbound-channel-adapter[Spring Integration Feed Inbound Channel Adapter]. The complete code for this example is in the https://github.com/spring-projects/spring-xd-samples/blob/master/rss-feed-source/[rss-feed-source] sample project. === Create the module Application Context file Configure the inbound channel adapter using an https://github.com/spring-projects/spring-xd-samples/blob/master/rss-feed-source/src/main/resources/config/spring-module.xml[xml] bean definition file in the `config` resource directory: @@ -28,7 +28,7 @@ Configure the inbound channel adapter using an https://github.com/spring-project The adapter is configured to poll an RSS feed at a fixed rate (e.g., every 5 seconds). Note that `auto-startup` is set to `false`. This is a requirement for Spring XD modules. When a stream is deployed, the Spring XD runtime will create and start stream modules in reverse order to ensure that all modules are initialized before the source starts emiting messages. When an RSS Entry is retreived, it will create a message with a `com.rometools.rome.feed.synd.SyndEntry` payload type and send it to a message channel called _output_. The name _output_ is a Spring XD convention indicating the module's output channel. Any messages on the output channel will be consumed by the downstream processor or sink in a stream used by this module. -The module is configurable so that it may pull data from any feed URL, such as `http://feeds.bbci.co.uk/news/rss.xml`. Spring XD will automatically register a PropertyPlaceholderConfigurer in the module's application context. These properties correspond to module options defined for this module (discussed below). Users supply option values when creating a xref:Streams#streams[stream] using the DSL. +The module is configurable so that it may pull data from any feed URL, such as `https://feeds.bbci.co.uk/news/rss.xml`. Spring XD will automatically register a PropertyPlaceholderConfigurer in the module's application context. These properties correspond to module options defined for this module (discussed below). Users supply option values when creating a xref:Streams#streams[stream] using the DSL. Users must provide a _url_ option value when creating a stream that uses this source. The polling rate and maximum number of entries retrieved for each poll are also configurable and for these properties we should provide reasonable default values. The module's https://github.com/spring-projects/spring-xd-samples/blob/master/rss-feed-source/src/main/resources/config/spring-module.properties[properties] file in the `config` resource directory contains xref:ModuleOptionsMetadata[Module Options Metadata] including a description, type, and optional default value for each property. The metadata supports features like auto-completion in the Spring XD shell and option validation: @@ -80,7 +80,7 @@ Add the following https://github.com/spring-projects/spring-xd-samples/blob/mast - http://feeds.bbci.co.uk/news/rss.xml + https://feeds.bbci.co.uk/news/rss.xml 5000 100 @@ -157,7 +157,7 @@ public class FeedSourceModuleIntegrationTest { @Test public void test() { - String url = "http://feeds.bbci.co.uk/news/rss.xml"; + String url = "https://feeds.bbci.co.uk/news/rss.xml"; SingleNodeProcessingChainConsumer chain = chainConsumer(application, "feedStream", String.format("feed --url='%s'", url)); Object payload = chain.receivePayload(RECEIVE_TIMEOUT); @@ -173,7 +173,7 @@ The above test configures an and starts embedded Spring XD runtime (SingleNodeAp The `SingleNodeProcessingChainConsumer` can test a stream that does not include a sink. The chain itself provides an in-memory sink to access the stream's output directly. In this case, we use the chain to test the source in isolation. The above test is equivalent to deploying following stream definition: ---- -feed --url='http://feeds.bbci.co.uk/news/rss.xml' > queue:aNamedChannel +feed --url='https://feeds.bbci.co.uk/news/rss.xml' > queue:aNamedChannel ---- and the chain consumes messages on the named queue channel. At the end of each test method, the chain should be destroyed to destroy these internal resources and restore the initial state of the Spring XD container. @@ -206,12 +206,12 @@ Also See xref:Modules#registering-a-module[registering a module] for more detail === Test the source module Once Spring XD is running, create a stream to test it the module. This stream will write SyndEntry objects rendered as JSON to the Spring XD log: - xd:> stream create --name feedtest --definition "feed --url='http://feeds.bbci.co.uk/news/rss.xml' | log" --deploy + xd:> stream create --name feedtest --definition "feed --url='https://feeds.bbci.co.uk/news/rss.xml' | log" --deploy You should start seeing messages like the following in the container log: ---- -16:46:41,309 1.1.0.SNAP INFO xdbus.feedTest.0-1 sink.feedTest - {"uri":"http://www.bbc.co.uk/sport/0/football/30700069","link":"http://www.bbc.co.uk/sport/0/football/30700069","comments":null,"updatedDate":null,"title":"Gerrard to seal move to LA Galaxy","description":{"type":"text/html","value":"Liverpool captain Steven Gerrard is on the brink of finalising an 18-month deal to join MLS side Los Angeles Galaxy.","mode":null,"interface":"com.rometools.rome.feed.synd.SyndContent"},"links":[],"contents":[],"modules":[{"uri":"http://purl.org/dc/elements/1.1/","title":null,"creator":null,"subject":null,"description":null,"publisher":null,"contributors":[],"date":1420580673000,"type":null,"format":null,"identifier":null,"source":null,"language":null,"relation":null,"coverage":null,"rights":null,"sources":[],"types":[],"formats":[],"identifiers":[],"interface":"com.rometools.rome.feed.module.DCModule","creators":[],"titles":[],"descriptions":[],"publishers":[],"contributor":null,"dates":[1420580673000],"languages":[],"relations":[],"coverages":[],"rightsList":[],"subjects":[]}],"enclosures":[],"authors":[],"contributors":[],"source":null,"wireEntry":null,"categories":[],"interface":"com.rometools.rome.feed.synd.SyndEntry","titleEx":{"type":null,"value":"Gerrard to seal move to LA Galaxy","mode":null,"interface":"com.rometools.rome.feed.synd.SyndContent"},"publishedDate":1420580673000,"author":""} +16:46:41,309 1.1.0.SNAP INFO xdbus.feedTest.0-1 sink.feedTest - {"uri":"https://www.bbc.co.uk/sport/0/football/30700069","link":"https://www.bbc.co.uk/sport/0/football/30700069","comments":null,"updatedDate":null,"title":"Gerrard to seal move to LA Galaxy","description":{"type":"text/html","value":"Liverpool captain Steven Gerrard is on the brink of finalising an 18-month deal to join MLS side Los Angeles Galaxy.","mode":null,"interface":"com.rometools.rome.feed.synd.SyndContent"},"links":[],"contents":[],"modules":[{"uri":"http://purl.org/dc/elements/1.1/","title":null,"creator":null,"subject":null,"description":null,"publisher":null,"contributors":[],"date":1420580673000,"type":null,"format":null,"identifier":null,"source":null,"language":null,"relation":null,"coverage":null,"rights":null,"sources":[],"types":[],"formats":[],"identifiers":[],"interface":"com.rometools.rome.feed.module.DCModule","creators":[],"titles":[],"descriptions":[],"publishers":[],"contributor":null,"dates":[1420580673000],"languages":[],"relations":[],"coverages":[],"rightsList":[],"subjects":[]}],"enclosures":[],"authors":[],"contributors":[],"source":null,"wireEntry":null,"categories":[],"interface":"com.rometools.rome.feed.synd.SyndEntry","titleEx":{"type":null,"value":"Gerrard to seal move to LA Galaxy","mode":null,"interface":"com.rometools.rome.feed.synd.SyndContent"},"publishedDate":1420580673000,"author":""} ---- diff --git a/src/docs/asciidoc/Deployment.asciidoc b/src/docs/asciidoc/Deployment.asciidoc index f4d07b611..252b6a4c5 100644 --- a/src/docs/asciidoc/Deployment.asciidoc +++ b/src/docs/asciidoc/Deployment.asciidoc @@ -238,7 +238,7 @@ Depending on your underlying server or network infrastructure, you may prefer sp ==== Hostname -The hostname of the container can be optionally set as well via the command argument _--containerHostname_ or by setting the environment variable _XD_CONTAINER_HOSTNAME_. If not specified, the hostname will be automatically set. Please be aware of the http://stackoverflow.com/questions/7348711/recommended-way-to-get-hostname-in-java/7800008#7800008[limitations], though. You may prefer specifying the hostname address explicitly. +The hostname of the container can be optionally set as well via the command argument _--containerHostname_ or by setting the environment variable _XD_CONTAINER_HOSTNAME_. If not specified, the hostname will be automatically set. Please be aware of the https://stackoverflow.com/questions/7348711/recommended-way-to-get-hostname-in-java/7800008#7800008[limitations], though. You may prefer specifying the hostname address explicitly. TIP: While there is no command line option to set the container hostname and IP address when running in Single Node mode, you can still specify the values via environment variables or by customizing the respective settings in _application.yml_ diff --git a/src/docs/asciidoc/Extending-XD.asciidoc b/src/docs/asciidoc/Extending-XD.asciidoc index 1f24b6655..c0f0e972f 100644 --- a/src/docs/asciidoc/Extending-XD.asciidoc +++ b/src/docs/asciidoc/Extending-XD.asciidoc @@ -4,7 +4,7 @@ == Extending Spring XD === Introduction -This document describes how to customize or extend the Spring XD Container. Spring XD is a distributed runtime platform delivered as executable components including XD Admin, XD Container, and XD Shell. The XD Container is a Spring application combining XML resources, Java @Configuration classes, and Spring Boot auto configuration for its internal configuration, initialized via the Spring Boot http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/api/org/springframework/boot/builder/SpringApplicationBuilder.html[SpringApplicationBuilder]. Since Spring XD is open source, the curious user can see exactly how it is configured. However, all Spring XD's configuration is bundled in jar files and therefore not directly accessible to end users. Most users do not need to customize or extend the XD Container. For those that do, Spring XD provides hooks to: +This document describes how to customize or extend the Spring XD Container. Spring XD is a distributed runtime platform delivered as executable components including XD Admin, XD Container, and XD Shell. The XD Container is a Spring application combining XML resources, Java @Configuration classes, and Spring Boot auto configuration for its internal configuration, initialized via the Spring Boot https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/api/org/springframework/boot/builder/SpringApplicationBuilder.html[SpringApplicationBuilder]. Since Spring XD is open source, the curious user can see exactly how it is configured. However, all Spring XD's configuration is bundled in jar files and therefore not directly accessible to end users. Most users do not need to customize or extend the XD Container. For those that do, Spring XD provides hooks to: * Provide additional bean definitions * Override selected bean definitions with custom implementations @@ -40,13 +40,13 @@ While this arrangement of application contexts is more complex than the typical [[Plugin-Architecture]] === Plugin Architecture -The XD Container at its core is simply a runtime environment for hosting and managing micro Spring applications called 'Modules'. Each module runs in its own application context ('Module Context'). The Module Context is a child of 'Global Context', as modules share some bean definitions, but otherwise is logically isolated from beans defined in the XD Container. The 'Module Context' is fundamental to the Spring XD design. In fact, this is what allows each module to define its own 'input' and 'output' channels, and in general, enables beans be uniquely configured via property placeholders evaluated for each deployed instance of a Module. The http://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/xd/module/core/Module.html[Module] interface and its default implementation provide a thin wrapper around a Spring Application Context for which properties are bound, profiles activated, and beans added or enhanced in order to "plug" the module into the XD Container. +The XD Container at its core is simply a runtime environment for hosting and managing micro Spring applications called 'Modules'. Each module runs in its own application context ('Module Context'). The Module Context is a child of 'Global Context', as modules share some bean definitions, but otherwise is logically isolated from beans defined in the XD Container. The 'Module Context' is fundamental to the Spring XD design. In fact, this is what allows each module to define its own 'input' and 'output' channels, and in general, enables beans be uniquely configured via property placeholders evaluated for each deployed instance of a Module. The https://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/xd/module/core/Module.html[Module] interface and its default implementation provide a thin wrapper around a Spring Application Context for which properties are bound, profiles activated, and beans added or enhanced in order to "plug" the module into the XD Container. -The 'ModuleDeployer', shown in the diagram, is a core component of the Container Context, responsible for initializing modules during deployment, and shutting them down during undeployment. The ModuleDeployer sees the module as a "black box", unaware of its purpose or runtime requirements. Binding a module's channels to XD's data transport, for instance, is the responsibility of the http://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/integration/x/bus/MessageBus.html[MessageBus] implementation configured for the transport. The MessageBus binding methods are actually invoked by the 'StreamPlugin' during the initialization of a stream module. To support jobs, XD provides a 'JobPlugin' to wire the Spring Batch components defined in the module during deployment. The JobPlugin also invokes the MessageBus to support communications between XD and job modules. These, and other functions critical to Spring XD are performed by classes that implement the http://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/xd/module/core/Plugin.html[Plugin] interface. A Plugin operates on every deployed Module which it is implemented to support. Thus the ModuleDeployer simply invokes the deployment life cycle methods provided by every Plugin registered in the Plugin Context. +The 'ModuleDeployer', shown in the diagram, is a core component of the Container Context, responsible for initializing modules during deployment, and shutting them down during undeployment. The ModuleDeployer sees the module as a "black box", unaware of its purpose or runtime requirements. Binding a module's channels to XD's data transport, for instance, is the responsibility of the https://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/integration/x/bus/MessageBus.html[MessageBus] implementation configured for the transport. The MessageBus binding methods are actually invoked by the 'StreamPlugin' during the initialization of a stream module. To support jobs, XD provides a 'JobPlugin' to wire the Spring Batch components defined in the module during deployment. The JobPlugin also invokes the MessageBus to support communications between XD and job modules. These, and other functions critical to Spring XD are performed by classes that implement the https://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/xd/module/core/Plugin.html[Plugin] interface. A Plugin operates on every deployed Module which it is implemented to support. Thus the ModuleDeployer simply invokes the deployment life cycle methods provided by every Plugin registered in the Plugin Context. The ModuleDeployer discovers registered Plugins by calling `getBeansOfType(Plugin.class)` for the 'Plugin Context' (its parent context). This means that adding your own Plugin requires these steps: - * Implement the http://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/xd/module/core/Plugin.html[Plugin] interface + * Implement the https://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/xd/module/core/Plugin.html[Plugin] interface * Add your Plugin implementation and any dependent classes to Spring XD's class path * Follow conventions that Spring XD uses to register Plugins @@ -79,7 +79,7 @@ Extensions are packaged in a jar file which must be added to Spring XD's class p [[Providing-a-New-Type-Converter]] === Providing A new Type Converter -Spring XD supports xref:Type-conversion[automatic type conversion] to convert payloads declaratively. For example, to convert an object to JSON, you provide the module option `--outputType=application/json` to a module used in a stream definition. The conversion is enabled by a 'Plugin' that binds a Spring http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/converter/MessageConverter.html[MessageConverter] to a media type. The default type converters are currently configured in https://github.com/spring-projects/spring-xd/blob/master/spring-xd-dirt/src/main/resources/META-INF/spring-xd/plugins/streams.xml[streams.xml], packaged in `spring-xd-dirt-.jar`. If you look at that file, you can see an empty list registered as `customMessageConverters`. +Spring XD supports xref:Type-conversion[automatic type conversion] to convert payloads declaratively. For example, to convert an object to JSON, you provide the module option `--outputType=application/json` to a module used in a stream definition. The conversion is enabled by a 'Plugin' that binds a Spring https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/converter/MessageConverter.html[MessageConverter] to a media type. The default type converters are currently configured in https://github.com/spring-projects/spring-xd/blob/master/spring-xd-dirt/src/main/resources/META-INF/spring-xd/plugins/streams.xml[streams.xml], packaged in `spring-xd-dirt-.jar`. If you look at that file, you can see an empty list registered as `customMessageConverters`. [source,xml] ---- @@ -87,11 +87,11 @@ Spring XD supports xref:Type-conversion[automatic type conversion] to convert pa ---- -So registering new type converters is a matter of registering an alternate list as `customMessageConverters` to the application context. Spring XD will replace the default empty list with yours. `xd.messageConverters` and `customMessageConverters` are two lists injected into the 'ModuleTypeConversionPlugin' to build an instance of http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/converter/CompositeMessageConverter.html[CompositeMessageConverter] which delegates to the first converter in list order that is able to perform the necessary conversion. The Plugin injects the CompositeMessageConverter into the module's 'input' or 'output' the http://docs.spring.io/spring-integration/docs/current/api/org/springframework/integration/channel/AbstractMessageChannel.html[MessageChannel], corresponding to the `inputType` or `outputType` options declared for any module in the stream definition (or defined as the module's default `inputType`). +So registering new type converters is a matter of registering an alternate list as `customMessageConverters` to the application context. Spring XD will replace the default empty list with yours. `xd.messageConverters` and `customMessageConverters` are two lists injected into the 'ModuleTypeConversionPlugin' to build an instance of https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/converter/CompositeMessageConverter.html[CompositeMessageConverter] which delegates to the first converter in list order that is able to perform the necessary conversion. The Plugin injects the CompositeMessageConverter into the module's 'input' or 'output' the https://docs.spring.io/spring-integration/docs/current/api/org/springframework/integration/channel/AbstractMessageChannel.html[MessageChannel], corresponding to the `inputType` or `outputType` options declared for any module in the stream definition (or defined as the module's default `inputType`). -The CompositeMessageConverter is desirable because a module does not generally know what payload type it will get from its predecessor. For example, the converters that Spring XD provides out of the box can convert any Java object, including a http://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/xd/tuple/Tuple.html[Tuple] and a byte array to a JSON String. However the methods for converting a byte array or a Tuple are each optimized for the respective type. The CompositeMessageConverter for --outputType=application/json must provide all three methods and the Data Type channel chooses the first converter that applies to both the incoming payload type and the media type (e.g., application/json). Note that the order that the converters appear in the list is significant. In general, converters for specific payload types precede more general converters for the same media type. The `customMessageConverters` are added after the standard converters in the order defined. So it is generally easier to add converters for new media types than to replace existing converters. +The CompositeMessageConverter is desirable because a module does not generally know what payload type it will get from its predecessor. For example, the converters that Spring XD provides out of the box can convert any Java object, including a https://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/xd/tuple/Tuple.html[Tuple] and a byte array to a JSON String. However the methods for converting a byte array or a Tuple are each optimized for the respective type. The CompositeMessageConverter for --outputType=application/json must provide all three methods and the Data Type channel chooses the first converter that applies to both the incoming payload type and the media type (e.g., application/json). Note that the order that the converters appear in the list is significant. In general, converters for specific payload types precede more general converters for the same media type. The `customMessageConverters` are added after the standard converters in the order defined. So it is generally easier to add converters for new media types than to replace existing converters. -For example, a member of the Spring XD community inquired about Spring XD's support for https://developers.google.com/protocol-buffers/[Google protocol buffers]. This user was interested in integrating Spring XD with an existing messaging system that uses GPB heavily and needed a way to convert incoming and outgoing GPB payloads to interoperate with XD streams. This could be accomplished by providing a `customMessageConverters` bean containing a list of required message converters. Writing a custom converter to work with XD requires extending http://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/integration/x/bus/converter/AbstractFromMessageConverter.html[AbstractFromMessageConverter] provided by `spring-xd-dirt`. It is recommended to review the existing implementations listed in https://github.com/spring-projects/spring-xd/blob/master/spring-xd-dirt/src/main/resources/META-INF/spring-xd/plugins/streams.xml[streams.xml] to get a feel for how to do this. In addition, you would likely define a custom http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/MimeType.html[MimeType] such as `application/gpb`. +For example, a member of the Spring XD community inquired about Spring XD's support for https://developers.google.com/protocol-buffers/[Google protocol buffers]. This user was interested in integrating Spring XD with an existing messaging system that uses GPB heavily and needed a way to convert incoming and outgoing GPB payloads to interoperate with XD streams. This could be accomplished by providing a `customMessageConverters` bean containing a list of required message converters. Writing a custom converter to work with XD requires extending https://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/integration/x/bus/converter/AbstractFromMessageConverter.html[AbstractFromMessageConverter] provided by `spring-xd-dirt`. It is recommended to review the existing implementations listed in https://github.com/spring-projects/spring-xd/blob/master/spring-xd-dirt/src/main/resources/META-INF/spring-xd/plugins/streams.xml[streams.xml] to get a feel for how to do this. In addition, you would likely define a custom https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/util/MimeType.html[MimeType] such as `application/gpb`. NOTE: It is worth mentioning that GPB is commonly used for marshaling objects over the network. In the context of Spring XD marshaling is treated as a separate concern from payload conversion. In Spring XD, marshaling happens at the "pipe" indicated by the '|' symbol using a different serialization mechanism, described below. In this case, the GPB payloads are produced and consumed by systems external to Spring XD and need to be converted in order that a GPB payload can work with XD streams. In this scenario, if the GPB is represented as a byte array, the bytes are transmitted over the network directly and marshaling is unnecessary. @@ -138,7 +138,7 @@ The above snippet is from an internal Spring configuration file loaded into the This makes it relatively simple for Spring XD developers and advanced users to provide alternate MessageBus implementations to enable a new transport and activate that transport by setting the `xd.transport` property. For example, to implement a JMS MessageBus you would add a jar containing `/META-INF/spring-xd/transports/jms-bus.xml` in the class path. This file must register a bean of type 'MessageBus' with the ID `messageBus`. A jar providing the above configuration file along with the MessageBus implementation and any dependencies must be installed `$XD_HOME/lib`. -When implementing a MessageBus, it is advisable to review and understand the existing implementations which extend http://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/integration/x/bus/MessageBusSupport.html[MessageBusSupport]. This base class performs some common tasks including payload marshaling. Spring XD uses the term 'codec' to connote a component that performs both serialization and deserialization and provides a bean with the same name. In the example above, the JMS MessageBus configuration`/META-INF/spring-xd/transports/jms-bus.xml` might look something like: +When implementing a MessageBus, it is advisable to review and understand the existing implementations which extend https://docs.spring.io/spring-xd/docs/{appversion}/api/org/springframework/integration/x/bus/MessageBusSupport.html[MessageBusSupport]. This base class performs some common tasks including payload marshaling. Spring XD uses the term 'codec' to connote a component that performs both serialization and deserialization and provides a bean with the same name. In the example above, the JMS MessageBus configuration`/META-INF/spring-xd/transports/jms-bus.xml` might look something like: [source,xml] ----- diff --git a/src/docs/asciidoc/Getting-Started.asciidoc b/src/docs/asciidoc/Getting-Started.asciidoc index 07435de94..199553d25 100644 --- a/src/docs/asciidoc/Getting-Started.asciidoc +++ b/src/docs/asciidoc/Getting-Started.asciidoc @@ -2,12 +2,12 @@ == Getting Started === Requirements -To get started, make sure your system has as a minimum http://www.oracle.com/technetwork/java/javase/downloads/[*Java JDK 7*] or newer installed. *Java JDK 7* is recommended. +To get started, make sure your system has as a minimum https://www.oracle.com/technetwork/java/javase/downloads/[*Java JDK 7*] or newer installed. *Java JDK 7* is recommended. === Download Spring XD -To download the current GA release, you can download the distribution http://repo.spring.io/libs-release/org/springframework/xd/spring-xd/1.3.2.RELEASE/spring-xd-1.3.2.RELEASE-dist.zip[*spring-xd-1.3.2.RELEASE-dist.zip*] and http://repo.spring.io/libs-release/org/springframework/xd/spring-xd/1.3.2.RELEASE/spring-xd-1.3.2.RELEASE-docs.zip[its accompanying documentation]. +To download the current GA release, you can download the distribution https://repo.spring.io/libs-release/org/springframework/xd/spring-xd/1.3.2.RELEASE/spring-xd-1.3.2.RELEASE-dist.zip[*spring-xd-1.3.2.RELEASE-dist.zip*] and https://repo.spring.io/libs-release/org/springframework/xd/spring-xd/1.3.2.RELEASE/spring-xd-1.3.2.RELEASE-docs.zip[its accompanying documentation]. -If you want to try out the latest build of Spring XD, You can download the snapshot distribution from http://repo.spring.io/libs-snapshot/org/springframework/xd/spring-xd/1.3.3.BUILD-SNAPSHOT[the spring snapshots repository]. You can also xref:Building-Spring-XD#building-spring-xd[build the project from source] if you wish. The wiki content should also be kept up to date with the current snapshot so if you are reading this on the github website, things may have changed since the last stable release. +If you want to try out the latest build of Spring XD, You can download the snapshot distribution from https://repo.spring.io/libs-snapshot/org/springframework/xd/spring-xd/1.3.3.BUILD-SNAPSHOT[the spring snapshots repository]. You can also xref:Building-Spring-XD#building-spring-xd[build the project from source] if you wish. The wiki content should also be kept up to date with the current snapshot so if you are reading this on the github website, things may have changed since the last stable release. Unzip the distribution which will unpack to a single installation directory. All the commands below are executed from this directory, so change into it before proceeding. @@ -120,7 +120,7 @@ Want to add some analytics to your stream? Check out the xref:Taps#taps[Taps] an [[osx-homebrew-installation]] === OSX Homebrew installation -If you are on a Mac and using http://brew.sh/[homebrew], all you need to do to install _Spring XD_ is: +If you are on a Mac and using https://brew.sh/[homebrew], all you need to do to install _Spring XD_ is: [source,bash] ---- diff --git a/src/docs/asciidoc/Hadoop-Installation.asciidoc b/src/docs/asciidoc/Hadoop-Installation.asciidoc index e31f64dfc..98b3867a8 100644 --- a/src/docs/asciidoc/Hadoop-Installation.asciidoc +++ b/src/docs/asciidoc/Hadoop-Installation.asciidoc @@ -3,19 +3,19 @@ === Installing Hadoop -If you don't have a local _Hadoop_ cluster available already, you can do a local http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html[single node installation (v2.6.0)] and use that to try out _Hadoop_ with _Spring XD_. +If you don't have a local _Hadoop_ cluster available already, you can do a local https://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/SingleCluster.html[single node installation (v2.6.0)] and use that to try out _Hadoop_ with _Spring XD_. TIP: This guide is intended to serve as a quick guide to get you started in the context of _Spring XD_. For more complete documentation please refer back to the documentation provided by your respective _Hadoop_ distribution. ==== Download -First, http://archive.apache.org/dist/hadoop/common/hadoop-2.6.0/[download an installation archive] (hadoop-2.6.0.tar.gz) and unpack it locally. Linux users can also install _Hadoop_ through the system package manager and on Mac OS X, you can use http://brew.sh/[Homebrew]. However, the manual installation is self-contained and it's easier to see what's going on if you just unpack it to a known location. +First, https://archive.apache.org/dist/hadoop/common/hadoop-2.6.0/[download an installation archive] (hadoop-2.6.0.tar.gz) and unpack it locally. Linux users can also install _Hadoop_ through the system package manager and on Mac OS X, you can use https://brew.sh/[Homebrew]. However, the manual installation is self-contained and it's easier to see what's going on if you just unpack it to a known location. If you have `wget` available on your system, you can also execute: [source,bash] ---- -$ wget http://archive.apache.org/dist/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz +$ wget https://archive.apache.org/dist/hadoop/common/hadoop-2.6.0/hadoop-2.6.0.tar.gz ---- Unpack the distribution with: @@ -61,7 +61,7 @@ NOTE: When using _MAC OS X_ (Other systems possible also) you may still encounte ==== Setup SSH -As described in the installation guide, you also need to set up http://en.wikipedia.org/wiki/Secure_Shell[SSH] login to `localhost` without a passphrase. On Linux, you may need to install the `ssh` package and ensure the `sshd` daemon is running. On Mac OS X, ssh is already installed but the `sshd` daemon isn't usually running. To start it, you need to enable "Remote Login" in the "Sharing" section of the control panel. Then you can carry on and setup SSH keys as described in the installation guide: +As described in the installation guide, you also need to set up https://en.wikipedia.org/wiki/Secure_Shell[SSH] login to `localhost` without a passphrase. On Linux, you may need to install the `ssh` package and ensure the `sshd` daemon is running. On Mac OS X, ssh is already installed but the `sshd` daemon isn't usually running. To start it, you need to enable "Remote Login" in the "Sharing" section of the control panel. Then you can carry on and setup SSH keys as described in the installation guide: [source,bash] ---- diff --git a/src/docs/asciidoc/Java-API.asciidoc b/src/docs/asciidoc/Java-API.asciidoc index 2b2e39584..91e19f710 100644 --- a/src/docs/asciidoc/Java-API.asciidoc +++ b/src/docs/asciidoc/Java-API.asciidoc @@ -2,7 +2,7 @@ == JAVA API === Introduction -The class http://docs.spring.io/spring-xd/docs/1.0.1.RELEASE/api/org/springframework/xd/rest/client/impl/SpringXDTemplate.html[SpringXDTemplate] lets you intereact with Spring XD's REST API in Java. It saves you the trouble of wrapping your own calls to RestTemplate or other REST client libraries. Within Spring XD `SpringXDTemplate` is used to implement shell commands and for testing. +The class https://docs.spring.io/spring-xd/docs/1.0.1.RELEASE/api/org/springframework/xd/rest/client/impl/SpringXDTemplate.html[SpringXDTemplate] lets you intereact with Spring XD's REST API in Java. It saves you the trouble of wrapping your own calls to RestTemplate or other REST client libraries. Within Spring XD `SpringXDTemplate` is used to implement shell commands and for testing. ==== Required Libraries The following maven snippet will pull in the required dependencies: @@ -20,7 +20,7 @@ The following maven snippet will pull in the required dependencies: spring-release Spring Releases - http://repo.spring.io/libs-release + https://repo.spring.io/libs-release ---- diff --git a/src/docs/asciidoc/Jobs.asciidoc b/src/docs/asciidoc/Jobs.asciidoc index d5e9b9110..a4af7717b 100644 --- a/src/docs/asciidoc/Jobs.asciidoc +++ b/src/docs/asciidoc/Jobs.asciidoc @@ -493,7 +493,7 @@ A Sqoop job can be deployed and launched from Spring XD as a batch job. The Sqoo NOTE: The current release supports Sqoop 1.4.5 -The intention is to eventually support all features of the Sqoop tool. See http://sqoop.apache.org/docs/1.4.5/SqoopUserGuide.html[Sqoop User Guide] for full documentation of the Sqoop features. +The intention is to eventually support all features of the Sqoop tool. See https://sqoop.apache.org/docs/1.4.5/SqoopUserGuide.html[Sqoop User Guide] for full documentation of the Sqoop features. NOTE: If you access any database other than HSQLDB or Postgres in a job module then the JDBC driver jar for that database needs to be present in the `$XD_HOME/lib` directory. diff --git a/src/docs/asciidoc/Module-Project-Migration.asciidoc b/src/docs/asciidoc/Module-Project-Migration.asciidoc index 4b97fdde8..82c8ff773 100644 --- a/src/docs/asciidoc/Module-Project-Migration.asciidoc +++ b/src/docs/asciidoc/Module-Project-Migration.asciidoc @@ -33,7 +33,7 @@ For example we can take the following pom.xml from a 1.0.x style module project: [source,xml] ---- - 4.0.0 org.springframework.xd.samples @@ -61,11 +61,11 @@ For example we can take the following pom.xml from a 1.0.x style module project: spring-milestone - http://repo.springsource.org/libs-milestone + https://repo.springsource.org/libs-milestone spring-release - http://repo.springsource.org/libs-milestone + https://repo.springsource.org/libs-milestone @@ -97,7 +97,7 @@ and now replace it with a pom.xml that uses spring-xd-module-parent. [source,xml] ---- - 4.0.0 org.springframework.xd.samples @@ -114,11 +114,11 @@ and now replace it with a pom.xml that uses spring-xd-module-parent. spring-io-release - http://repo.spring.io/release + https://repo.spring.io/release jcenter - http://jcenter.bintray.com + https://jcenter.bintray.com @@ -151,7 +151,7 @@ apply plugin: 'idea' apply plugin: 'io.spring.dependency-management' repositories{ - maven { url 'http://repo.spring.io/libs-milestone' } + maven { url 'https://repo.spring.io/libs-milestone' } } dependencyManagement { @@ -184,7 +184,7 @@ task dist(type: Copy) { buildscript { repositories { - maven { url 'http://repo.spring.io/plugins-snapshot'} + maven { url 'https://repo.spring.io/plugins-snapshot'} } dependencies { classpath 'io.spring.gradle:dependency-management-plugin:0.1.0.RELEASE' @@ -201,11 +201,11 @@ and replace it with the a build.gradle that uses the spring-xd-module plugin. ---- buildscript { repositories { - maven { url "http://repo.spring.io/plugins-snapshot" } - maven { url "http://repo.spring.io/release" } + maven { url "https://repo.spring.io/plugins-snapshot" } + maven { url "https://repo.spring.io/release" } jcenter() - maven { url "http://repo.spring.io/snapshot" } - maven { url "http://repo.spring.io/milestone" } + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } } dependencies { classpath("org.springframework.xd:spring-xd-module-plugin:1.1.0.RELEASE") @@ -235,11 +235,11 @@ sourceCompatibility = 1.7 targetCompatibility = 1.7 repositories { - maven { url "http://repo.spring.io/release" } + maven { url "https://repo.spring.io/release" } mavenCentral() jcenter() - maven { url "http://repo.spring.io/snapshot" } - maven { url "http://repo.spring.io/milestone" } + maven { url "https://repo.spring.io/snapshot" } + maven { url "https://repo.spring.io/milestone" } } ---- If there is a dependency that your project needs and is not included in the XD diff --git a/src/docs/asciidoc/Modules.asciidoc b/src/docs/asciidoc/Modules.asciidoc index e3292a51a..2ddbbfd39 100644 --- a/src/docs/asciidoc/Modules.asciidoc +++ b/src/docs/asciidoc/Modules.asciidoc @@ -40,7 +40,7 @@ This section provides some general details on implementing and packaging custom ==== Stream Modules -Sources, processors, and sinks are built using http://spring.io/spring-integration[Spring Integration] and are typically perform a single task that they may be easily reused in streams. Alternately, a custom module may be required to perform a specific function, such as integration with a legacy service. In Spring Integration terms: +Sources, processors, and sinks are built using https://spring.io/spring-integration[Spring Integration] and are typically perform a single task that they may be easily reused in streams. Alternately, a custom module may be required to perform a specific function, such as integration with a legacy service. In Spring Integration terms: * A _source_ is a valid message flow that contains a direct channel named _output_ which is fed by an inbound adapter, either configured with a poller, or triggered by an event. @@ -88,12 +88,12 @@ Any root level `.class` files packaged as in a typical jar file. This may includ * *Dependent jar files:* Any required runtime dependencies that are not provided by the Spring XD runtime (in `$XD_INSTALL_DIR/xd/lib`) are loaded from the module's `/lib` directory. -As mentioned previously, a Spring XD module can be installed as an expanded directory tree or an archive. If the module requires dependent jars, which is the typical case, it may be packaged as an http://stackoverflow.com/questions/11947037/what-is-an-uber-jar[uber jar] compatible with the Spring Boot layout, and conforming to the above structure. The next section describes Spring XD's support for module packaging and development. +As mentioned previously, a Spring XD module can be installed as an expanded directory tree or an archive. If the module requires dependent jars, which is the typical case, it may be packaged as an https://stackoverflow.com/questions/11947037/what-is-an-uber-jar[uber jar] compatible with the Spring Boot layout, and conforming to the above structure. The next section describes Spring XD's support for module packaging and development. [[creating-a-module-project]] ==== Creating a Module Project -Spring XD (1.1.x or later) provides build tools for creating a module project to test and package the module either with xref:Modules#building-with-maven[Maven] or xref:Modules#building-with-gradle[Gradle]. As described in the above sections, the module jar must export any dependencies that are not provided by the Spring XD container. The build tools address these concerns, packaging your module as an uber jar by wrapping the http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html[Spring Boot Maven Plugin] or the http://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-gradle-plugin.html[Spring Boot Gradle Plugin], respectively. The plugins are configured with The `MODULE` layout for Spring Boot packaging. This does not build an executable jar file, as is normally done, and ensures `provided` dependencies will not be included in the uber jar. +Spring XD (1.1.x or later) provides build tools for creating a module project to test and package the module either with xref:Modules#building-with-maven[Maven] or xref:Modules#building-with-gradle[Gradle]. As described in the above sections, the module jar must export any dependencies that are not provided by the Spring XD container. The build tools address these concerns, packaging your module as an uber jar by wrapping the https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-maven-plugin.html[Spring Boot Maven Plugin] or the https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-plugins-gradle-plugin.html[Spring Boot Gradle Plugin], respectively. The plugins are configured with The `MODULE` layout for Spring Boot packaging. This does not build an executable jar file, as is normally done, and ensures `provided` dependencies will not be included in the uber jar. In addition, the build tools provide Spring XD dependencies necessary to compile and test the module. Specifically, `spring-xd-dirt` and `spring-xd-test` provide some useful features for module development. As you would expect, the Spring XD versions match the specified parent pom or plugin version. These provide support for: @@ -297,7 +297,7 @@ By default, the `module upload` command will fail if a module with the same name ==== The Module Registry -A http://docs.spring.io/spring-xd/docs/current/api/org/springframework/xd/module/ModuleDefinition.html[module definition] requires the following attributes to uniquely define a module: +A https://docs.spring.io/spring-xd/docs/current/api/org/springframework/xd/module/ModuleDefinition.html[module definition] requires the following attributes to uniquely define a module: * name - the name of the component, normally a single word representing the purpose of the module. Examples are _file_, _http_, _syslog_. * type - the module type, current Spring XD module types include _source_, _sink_, _processor_, and _job_ @@ -312,7 +312,7 @@ modules ├── source ---- -Spring XD provides a strategy interface http://docs.spring.io/spring-xd/docs/current/api/org/springframework/xd/dirt/module/ModuleRegistry.html[ModuleRegistry] used to locate a module of a given name and type. Currently Spring XD implements a ResourceModuleRegistry which is configured to locate modules in the following locations in this order: +Spring XD provides a strategy interface https://docs.spring.io/spring-xd/docs/current/api/org/springframework/xd/dirt/module/ModuleRegistry.html[ModuleRegistry] used to locate a module of a given name and type. Currently Spring XD implements a ResourceModuleRegistry which is configured to locate modules in the following locations in this order: * The file path given by `xd.module.home` (`${xd.home}/modules` by default) * `classpath:/modules/` (Spring XD does not provide any module definitions here) @@ -630,7 +630,7 @@ When creating a module, if you duplicate the name of an existing module for the [source,bash] ---- xd:>module compose tcp --definition "filter --expression=payload.contains('foo') | file" -14:52:27,781 WARN Spring Shell client.RestTemplate:566 - POST request for "http://ec2-50-16-24-31.compute-1.amazonaws.com:9393/modules" resulted in 409 (Conflict); invoking error handler +14:52:27,781 WARN Spring Shell client.RestTemplate:566 - POST request for "https://ec2-50-16-24-31.compute-1.amazonaws.com:9393/modules" resulted in 409 (Conflict); invoking error handler Command failed org.springframework.xd.rest.client.impl.SpringXDException: There is already a module named 'tcp' with type 'sink' ---- diff --git a/src/docs/asciidoc/Monitoring-and-Management.asciidoc b/src/docs/asciidoc/Monitoring-and-Management.asciidoc index b98e1042c..6ee7d1913 100644 --- a/src/docs/asciidoc/Monitoring-and-Management.asciidoc +++ b/src/docs/asciidoc/Monitoring-and-Management.asciidoc @@ -1,7 +1,7 @@ [[monitoring-management]] == Monitoring and Management -Spring XD uses Spring Boot's monitoring and management support over http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-monitoring[HTTP] and http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-jmx[JMX] along with Spring Integration's http://docs.spring.io/spring-integration/docs/4.0.0.M4/reference/htmlsingle/#jmx-mbean-exporter[MBean Exporters] +Spring XD uses Spring Boot's monitoring and management support over https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-monitoring[HTTP] and https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-jmx[JMX] along with Spring Integration's https://docs.spring.io/spring-integration/docs/4.0.0.M4/reference/htmlsingle/#jmx-mbean-exporter[MBean Exporters] === Monitoring XD Admin, Container and Single-node servers @@ -23,7 +23,7 @@ endpoints: The Spring Boot management endpoints are exposed over `HTTP`. When starting admin, container or singlenode server, the command-line option `--mgmtPort` can be specified to use an explicit port for management server. With the given valid management port, -the management endpoints can be accessed from that port. Please refer Spring Boot document http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#production-ready-endpoints[here] for more details on the endpoints. +the management endpoints can be accessed from that port. Please refer Spring Boot document https://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#production-ready-endpoints[here] for more details on the endpoints. For instance, once XD admin is started on localhost and the management port set to use the admin port (9393) @@ -72,12 +72,12 @@ Source, processor, and sink modules will generally have the following attributes [width="50%",frame="topbot",options="header"] |====================== |Module Type | Attributes and Operations -|Source |http://docs.spring.io/spring-integration/docs/current/api/org/springframework/integration/monitor/LifecycleMessageSourceMetrics.html[MessageSourceMetrics] -|Processor,Sink |http://docs.spring.io/spring-integration/docs/current/api/org/springframework/integration/monitor/LifecycleMessageHandlerMetrics.html[MessageHandlerMetrics] +|Source |https://docs.spring.io/spring-integration/docs/current/api/org/springframework/integration/monitor/LifecycleMessageSourceMetrics.html[MessageSourceMetrics] +|Processor,Sink |https://docs.spring.io/spring-integration/docs/current/api/org/springframework/integration/monitor/LifecycleMessageHandlerMetrics.html[MessageHandlerMetrics] |====================== -In addition, each module has channel attributes and operations defined by http://docs.spring.io/spring-integration/docs/current/api/org/springframework/integration/monitor/MessageChannelMetrics.html[MessageChannelMetrics]. +In addition, each module has channel attributes and operations defined by https://docs.spring.io/spring-integration/docs/current/api/org/springframework/integration/monitor/MessageChannelMetrics.html[MessageChannelMetrics]. ==== Jobs diff --git a/src/docs/asciidoc/Optimizing-Serialization.asciidoc b/src/docs/asciidoc/Optimizing-Serialization.asciidoc index 923a78fad..e2804383e 100644 --- a/src/docs/asciidoc/Optimizing-Serialization.asciidoc +++ b/src/docs/asciidoc/Optimizing-Serialization.asciidoc @@ -48,11 +48,11 @@ along with transport and processing time, will be significantly higher. === Serialization in XD In Spring XD 1.2.x, MessageBus implementations inject a bean of type -http://docs.spring.io/spring-xd/docs/current/api/org/springframework/xd/dirt/integration/bus/serializer/MultiTypeCodec.html[MultiTypeCodec], +https://docs.spring.io/spring-xd/docs/current/api/org/springframework/xd/dirt/integration/bus/serializer/MultiTypeCodec.html[MultiTypeCodec], where the term `Codec` refers to an component providing methods to serialize and deserialize objects. `MultiType` means that the component can handle any object. Spring XD is internally configured with a -http://docs.spring.io/spring-xd/docs/current/api/org/springframework/xd/dirt/integration/bus/serializer/kryo/PojoCodec.html[PojoCodec] +https://docs.spring.io/spring-xd/docs/current/api/org/springframework/xd/dirt/integration/bus/serializer/kryo/PojoCodec.html[PojoCodec] that delegates to Kryo and provides hooks to register custom Kryo serializers for specific types. @@ -146,7 +146,7 @@ public class CustomKryoRegistrarConfig { ---- The above example works by configuring a -http://docs.spring.io/spring-xd/docs/1.2.1.BUILD-SNAPSHOT/api/org/springframework/xd/dirt/integration/bus/serializer/kryo/KryoRegistrationRegistrar.html[KryoRegistrationRegistrar]. +https://docs.spring.io/spring-xd/docs/1.2.1.BUILD-SNAPSHOT/api/org/springframework/xd/dirt/integration/bus/serializer/kryo/KryoRegistrationRegistrar.html[KryoRegistrationRegistrar]. This class holds a list of `com.esotericsoftware.kryo.Registration` each of which associates a Java class to a Serializer and a unique integer. The integer is the `registration ID` for the type which allows Kryo to encode the serialized type @@ -216,9 +216,9 @@ public class SomeClass { If you have write access to the domain object this may be a simpler alternative to specify a custom serializer. Note this does not register the class with an ID, so your mileage may vary. This may be combined with using a -http://docs.spring.io/spring-xd/docs/1.2.1.BUILD-SNAPSHOT/api/org/springframework/xd/dirt/integration/bus/serializer/kryo/KryoClassMapRegistrar.html[KryoClassMapRegistrar] +https://docs.spring.io/spring-xd/docs/1.2.1.BUILD-SNAPSHOT/api/org/springframework/xd/dirt/integration/bus/serializer/kryo/KryoClassMapRegistrar.html[KryoClassMapRegistrar] or -http://docs.spring.io/spring-xd/docs/1.2.1.BUILD-SNAPSHOT/api/org/springframework/xd/dirt/integration/bus/serializer/kryo/KryoClassListRegistrar.html[KryoClassListRegistrar] +https://docs.spring.io/spring-xd/docs/1.2.1.BUILD-SNAPSHOT/api/org/springframework/xd/dirt/integration/bus/serializer/kryo/KryoClassListRegistrar.html[KryoClassListRegistrar] to register objects if necessary, but then there is less benefit to using the annotation. diff --git a/src/docs/asciidoc/Processors.asciidoc b/src/docs/asciidoc/Processors.asciidoc index 9152de934..8b8c40cfc 100644 --- a/src/docs/asciidoc/Processors.asciidoc +++ b/src/docs/asciidoc/Processors.asciidoc @@ -250,7 +250,7 @@ The `http-client` processor acts as a client that issues HTTP requests to a remo For example, the following command will result in an immediate fetching of earthquake data and it being logged in the container: ---- -xd:>stream create earthquakes --definition "trigger | http-client --url='''http://earthquake.usgs.gov/earthquakes/feed/geojson/all/day''' --httpMethod=GET | log" --deploy +xd:>stream create earthquakes --definition "trigger | http-client --url='''https://earthquake.usgs.gov/earthquakes/feed/geojson/all/day''' --httpMethod=GET | log" --deploy ---- [NOTE] diff --git a/src/docs/asciidoc/REST-API.asciidoc b/src/docs/asciidoc/REST-API.asciidoc index 50d4641ba..08838a520 100644 --- a/src/docs/asciidoc/REST-API.asciidoc +++ b/src/docs/asciidoc/REST-API.asciidoc @@ -10,7 +10,7 @@ The HTTP port is configurable and may be set as a command line argument when sta > $XD_HOME/bin/xd-admin --httpPort ---- -The Admin server also exposes runtime management resources enabled by Spring Boot under the `/management` context path, e.g., http://localhost:9393/management/metrics[]. These resources are covered in the http://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-monitoring[Spring Boot] documentation. +The Admin server also exposes runtime management resources enabled by Spring Boot under the `/management` context path, e.g., http://localhost:9393/management/metrics[]. These resources are covered in the https://docs.spring.io/spring-boot/docs/1.1.7.RELEASE/reference/htmlsingle/#production-ready-monitoring[Spring Boot] documentation. NOTE: There is also a `mgmtPort` command line argument which assigns a separate port for management services. Normally the same port is used for everything. diff --git a/src/docs/asciidoc/Running-Distributed-Mode.asciidoc b/src/docs/asciidoc/Running-Distributed-Mode.asciidoc index 82edb0bd7..7b4e6a99a 100644 --- a/src/docs/asciidoc/Running-Distributed-Mode.asciidoc +++ b/src/docs/asciidoc/Running-Distributed-Mode.asciidoc @@ -111,7 +111,7 @@ If the provided schemas are customized, other values may need to be customized. [[setting-up-zookeeper]] ==== Setting up ZooKeeper -Currently XD does not ship with ZooKeeper. At the time of this writing, the compliant version is 3.4.6 and you can download it from http://zookeeper.apache.org/releases.html[here]. Please refer to the http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html[ZooKeeper Getting Started Guide] for more information. A ZooKeeper ensemble consisting of at least three members is recommended for production installations, but a single server is all that is needed to have XD up and running. +Currently XD does not ship with ZooKeeper. At the time of this writing, the compliant version is 3.4.6 and you can download it from https://zookeeper.apache.org/releases.html[here]. Please refer to the https://zookeeper.apache.org/doc/trunk/zookeeperStarted.html[ZooKeeper Getting Started Guide] for more information. A ZooKeeper ensemble consisting of at least three members is recommended for production installations, but a single server is all that is needed to have XD up and running. You can configure the root path in Zookeeper where an XD cluster's top level nodes will be created. This allows you to run multiple independent clusters of XD that share a single ZK instance. Add the following to servers.yml to configure. You can also set as an environment variable, system property in the standard manner. @@ -164,12 +164,12 @@ You are now ready to start _Redis_ by executing $ ./redis-server ---- -TIP: For further information on installing _Redis_ in general, please checkout the http://redis.io/topics/quickstart[Redis Quick Start] guide. If you are using _Mac OS_, you can also install _Redis_ via http://mxcl.github.io/homebrew/[Homebrew] +TIP: For further information on installing _Redis_ in general, please checkout the https://redis.io/topics/quickstart[Redis Quick Start] guide. If you are using _Mac OS_, you can also install _Redis_ via https://mxcl.github.io/homebrew/[Homebrew] ===== Troubleshooting ====== Redis on Windows -Presently, _Spring XD_ does not ship _Windows_ binaries for _Redis_ (See https://jira.springsource.org/browse/XD-151[XD-151]). However, _Microsoft_ http://blogs.msdn.com/b/interoperability/archive/2013/04/22/redis-on-windows-stable-and-reliable.aspx[is actively working] on supporting _Redis_ on _Windows_. You can download _Windows_ _Redis_ binaries from: +Presently, _Spring XD_ does not ship _Windows_ binaries for _Redis_ (See https://jira.springsource.org/browse/XD-151[XD-151]). However, _Microsoft_ https://blogs.msdn.com/b/interoperability/archive/2013/04/22/redis-on-windows-stable-and-reliable.aspx[is actively working] on supporting _Redis_ on _Windows_. You can download _Windows_ _Redis_ binaries from: https://github.com/MSOpenTech/redis/tree/2.6/bin/release @@ -202,7 +202,7 @@ You should see something like this: | `-._ `._ / _.-' | PID: 11655 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| - | `-._`-._ _.-'_.-' | http://redis.io + | `-._`-._ _.-'_.-' | https://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | @@ -221,7 +221,7 @@ You should see something like this: If you already have a running instance of _RabbitMQ_ it can be used for Spring XD. By default Spring XD will try to use a _Rabbit_ instance running on *localhost* using *port 5672*. The default account credentials of *guest/guest* are assumed. You can change that in the `servers.yml` file residing in the `config/` directory. -If you don't have a _RabbitMQ_ installation already, head over to http://www.rabbitmq.com and follow the instructions. Packages are provided for Windows, Mac and various flavor of unix/linux. +If you don't have a _RabbitMQ_ installation already, head over to https://www.rabbitmq.com and follow the instructions. Packages are provided for Windows, Mac and various flavor of unix/linux. ===== Launching RabbitMQ @@ -235,7 +235,7 @@ You should see something similar to this: ---- RabbitMQ 3.3.0. Copyright (C) 2007-2013 GoPivotal, Inc. - ## ## Licensed under the MPL. See http://www.rabbitmq.com/ + ## ## Licensed under the MPL. See https://www.rabbitmq.com/ ## ## ########## Logs: /usr/local/var/log/rabbitmq/rabbit@localhost.log ###### ## /usr/local/var/log/rabbitmq/rabbit@localhost-sasl.log diff --git a/src/docs/asciidoc/Running-on-YARN.asciidoc b/src/docs/asciidoc/Running-on-YARN.asciidoc index 47a7345a7..eb3084683 100644 --- a/src/docs/asciidoc/Running-on-YARN.asciidoc +++ b/src/docs/asciidoc/Running-on-YARN.asciidoc @@ -14,8 +14,8 @@ To begin with, you need to have access to a Hadoop cluster running a version based on Apache Hadoop version 2. This includes link:http://www.us.apache.org/dist/hadoop/common/hadoop-2.7.1/[Apache Hadoop 2.7.1], -link:http://www.gopivotal.com/big-data/pivotal-hd[Pivotal HD 2.1 or 3.0], -link:http://hortonworks.com/hdp/[Hortonworks HDP 2.3] and link:http://www.cloudera.com/content/cloudera/en/products-and-services/cdh.html[Cloudera CDH5]. +link:https://pivotal.io/big-data/pivotal-hd[Pivotal HD 2.1 or 3.0], +link:https://hortonworks.com/hdp/[Hortonworks HDP 2.3] and link:https://www.cloudera.com/content/cloudera/en/products-and-services/cdh.html[Cloudera CDH5]. [IMPORTANT] ==== @@ -42,8 +42,8 @@ In addition to the regular `spring-xd--dist.zip` files we also distribute a zip file that includes all you need to deploy on YARN. The name of this zip file is `spring-xd--yarn.zip`. You can download the zip file for the current release from -link:http://repo.spring.io/release/org/springframework/xd/spring-xd/[Spring release repo] or a milestone build from the -link:http://repo.spring.io/milestone/org/springframework/xd/spring-xd/[Spring milestone repo]. Unzip the downloaded file and you should see a +link:https://repo.spring.io/release/org/springframework/xd/spring-xd/[Spring release repo] or a milestone build from the +link:https://repo.spring.io/milestone/org/springframework/xd/spring-xd/[Spring milestone repo]. Unzip the downloaded file and you should see a `spring-xd--yarn` directory. ==== Configure your deployment @@ -281,7 +281,7 @@ You can use the regular `yarn` command to check the status. Simply run: $ bin/xd-yarn submitted APPLICATION ID USER NAME QUEUE TYPE STARTTIME FINISHTIME STATE FINALSTATUS ORIGINAL TRACKING URL ------------------------------ ------------ ------ ------- ---- -------------- ---------- ------- ----------- --------------------------- - application_1420911708637_0001 jvalkealahti xd-app default XD 09/01/15 14:25 N/A RUNNING UNDEFINED http://172.16.101.106:49792 + application_1420911708637_0001 jvalkealahti xd-app default XD 09/01/15 14:25 N/A RUNNING UNDEFINED https://172.16.101.106:49792 ---- You should see one application running named `xd-app`. @@ -331,15 +331,15 @@ you can use the `admininfo` command to query this information: [source,bash] ---- $ bin/xd-yarn admininfo -Admins: [http://hadoop.localdomain:43740] +Admins: [https://hadoop.localdomain:43740] ---- Then connect xd-shell to this instance: [source,bash] ---- -server-unknown:>admin config server --uri http://hadoop.localdomain:43740 -Successfully targeted http://hadoop.localdomain:43740 +server-unknown:>admin config server --uri https://hadoop.localdomain:43740 +Successfully targeted https://hadoop.localdomain:43740 xd:>runtime containers Container Id Host IP Address PID Groups Custom Attributes diff --git a/src/docs/asciidoc/Sinks.asciidoc b/src/docs/asciidoc/Sinks.asciidoc index 8271ec6a1..e259cf461 100644 --- a/src/docs/asciidoc/Sinks.asciidoc +++ b/src/docs/asciidoc/Sinks.asciidoc @@ -73,7 +73,7 @@ In the server log you should see the following output: 11:54:25,669 WARN ThreadPoolTaskScheduler-1 sink.b:145 - b-bar ---- -For more information, please also consult the Spring Integration Reference manual: http://static.springsource.org/spring-integration/reference/html/messaging-routing-chapter.html#router-namespace particularly the section "Routers and the Spring Expression Language (SpEL)". +For more information, please also consult the Spring Integration Reference manual: https://docs.spring.io/spring-integration/reference/html/messaging-routing-chapter.html#router-namespace particularly the section "Routers and the Spring Expression Language (SpEL)". ==== Groovy-based Routing @@ -134,7 +134,7 @@ You can also use Groovy scripts located on your classpath by specifying: If you want to pass variable values to your script, you can statically bind values using the _variables_ option or optionally pass the path to a properties file containing the bindings using the _propertiesLocation_ option. All properties in the file will be made available to the script as variables. You may specify both _variables_ and _propertiesLocation_, in which case any duplicate values provided as _variables_ override values provided in _propertiesLocation_. Note that _payload_ and _headers_ are implicitly bound to give you access to the data contained in a message. For more information, see the Spring Integration Reference manual: "Groovy support" -http://static.springsource.org/spring-integration/reference/html/messaging-endpoints-chapter.html#groovy +https://docs.spring.io/spring-integration/reference/html/messaging-endpoints-chapter.html#groovy ==== Options @@ -463,7 +463,7 @@ among the Greenplum segments. The options `flushCount` and `flushTime` are used to determine when to flush data that is buffered in an internal -http://projectreactor.io/docs/reference/streams.html#basics[Reactor stream] to +https://projectreactor.io/docs/reference/streams.html#basics[Reactor stream] to the http connection. Data is flushed based on if the count value has been reached or the time specified has elapsed. Note that with too high a value, memory consumption will go up. Too small a value combined with a low ingestion rate will result in data @@ -1420,7 +1420,7 @@ $$workingDir$$:: $$the process working directory$$ *($$String$$, no default)* [[splunk-server]] === Splunk Server (`splunk`) -A http://www.splunk.com/[Splunk] sink that writes data to a TCP Data Input type for Splunk. +A https://www.splunk.com/[Splunk] sink that writes data to a TCP Data Input type for Splunk. ==== Splunk sinks The Splunk sink converts an object payload to a string using the object’s toString method and then converts this to a SplunkEvent that is sent via TCP to Splunk. diff --git a/src/docs/asciidoc/Sources.asciidoc b/src/docs/asciidoc/Sources.asciidoc index 210e222da..d8635c3ba 100644 --- a/src/docs/asciidoc/Sources.asciidoc +++ b/src/docs/asciidoc/Sources.asciidoc @@ -171,7 +171,7 @@ $ cat /tmp/xd/output/cqtest.out [[gemfire-source]] === GemFire Source (`gemfire`) -This source configures a client cache and client region, along with the necessary subscriptions enabled, in the XD container process along with a Spring Integration GemFire inbound channel adapter, backed by a CacheListener that outputs messages triggered by an external entry event on the region. By default the payload contains the updated entry value, but may be controlled by passing in a SpEL expression that uses the http://gemfire.docs.pivotal.io/latest/javadocs/japi/com/gemstone/gemfire/cache/EntryEvent.html[EntryEvent] as the evaluation context. +This source configures a client cache and client region, along with the necessary subscriptions enabled, in the XD container process along with a Spring Integration GemFire inbound channel adapter, backed by a CacheListener that outputs messages triggered by an external entry event on the region. By default the payload contains the updated entry value, but may be controlled by passing in a SpEL expression that uses the https://gemfire.docs.pivotal.io/latest/javadocs/japi/com/gemstone/gemfire/cache/EntryEvent.html[EntryEvent] as the evaluation context. TIP: If native gemfire properties are required to configure the client cache, e.g., for security, place a `gemfire.properties` file in $XD_HOME/config. @@ -686,7 +686,7 @@ NOTE: With the default _ackMode_ (*AUTO*) and _requeue_ (*true*) options, failed [[reactor-ip]] === Reactor IP (`reactor-ip`) -The `reactor-ip` source acts as a server and allows a remote party to connect to XD and submit data over a raw TCP or UDP socket. The reactor-ip source differs from the standard tcp source in that it is based on the https://github.com/reactor/reactor[Reactor Project] and can be configured to use the http://martinfowler.com/articles/lmax.html[LMAX Disruptor RingBuffer] library allowing for extremely high ingestion rates, e.g. ~ 1M/sec. +The `reactor-ip` source acts as a server and allows a remote party to connect to XD and submit data over a raw TCP or UDP socket. The reactor-ip source differs from the standard tcp source in that it is based on the https://github.com/reactor/reactor[Reactor Project] and can be configured to use the https://martinfowler.com/articles/lmax.html[LMAX Disruptor RingBuffer] library allowing for extremely high ingestion rates, e.g. ~ 1M/sec. To create a stream definition use the following XD shell command diff --git a/src/docs/asciidoc/Streams.asciidoc b/src/docs/asciidoc/Streams.asciidoc index c3fd8de09..2bd14c539 100644 --- a/src/docs/asciidoc/Streams.asciidoc +++ b/src/docs/asciidoc/Streams.asciidoc @@ -6,7 +6,7 @@ In Spring XD, a basic stream defines the ingestion of event driven data from a _source_ to a _sink_ that passes through any number of _processors_. Stream processing is performed inside the XD Containers and the deployment of stream definitions to containers is done via the XD Admin Server. The xref:Getting-Started#getting-started[Getting Started] section shows you how to start these servers and how to start and use the Spring XD shell -Sources, sinks and processors are predefined configurations of a _module_. Module definitions are found in the `xd/modules` directory. footnote:[Using the filesystem is just one possible way of storing module defintions. Other backends will be supported in the future, e.g. Redis.]. Modules definitions are standard Spring configuration files that use existing Spring classes, such as http://static.springsource.org/spring-integration/reference/htmlsingle/#spring-integration-adapters[Input/Output adapters] and http://static.springsource.org/spring-integration/reference/htmlsingle/#transformer[Transformers] from Spring Integration that support general http://www.eaipatterns.com/[Enterprise Integration Patterns]. +Sources, sinks and processors are predefined configurations of a _module_. Module definitions are found in the `xd/modules` directory. footnote:[Using the filesystem is just one possible way of storing module defintions. Other backends will be supported in the future, e.g. Redis.]. Modules definitions are standard Spring configuration files that use existing Spring classes, such as https://docs.spring.io/spring-integration/reference/htmlsingle/#spring-integration-adapters[Input/Output adapters] and https://docs.spring.io/spring-integration/reference/htmlsingle/#transformer[Transformers] from Spring Integration that support general https://www.enterpriseintegrationpatterns.com/[Enterprise Integration Patterns]. A high level DSL is used to create stream definitions. The DSL to define a stream that has an http source and a file sink (with no processors) is shown below @@ -43,7 +43,7 @@ If you would like to have multiple instances of a module in the stream, you can xd:> stream deploy --name ticktock --properties "module.time.count=3" -You can also include a http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/htmlsingle/#expressions[SpEL Expression] as a `criteria` property for any module. That will be evaluated against the attributes of each currently available Container. Instances of the module will only be deployed to Containers for which the expression evaluates to true. +You can also include a https://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/htmlsingle/#expressions[SpEL Expression] as a `criteria` property for any module. That will be evaluated against the attributes of each currently available Container. Instances of the module will only be deployed to Containers for which the expression evaluates to true. xd:> stream deploy --name ticktock --properties "module.time.count=3,module.log.criteria=groups.contains('x')" diff --git a/src/docs/asciidoc/Taps.asciidoc b/src/docs/asciidoc/Taps.asciidoc index 6273101d2..2e7881dff 100644 --- a/src/docs/asciidoc/Taps.asciidoc +++ b/src/docs/asciidoc/Taps.asciidoc @@ -3,7 +3,7 @@ === Introduction -A Tap allows you to "listen" to data while it is processed in an existing stream and process the data in a separate stream. The original stream is unaffected by the tap and isn't aware of its presence, similar to a phone wiretap. (http://www.enterpriseintegrationpatterns.com/WireTap.html[WireTap] is included in the standard catalog of EAI patterns and http://static.springsource.org/spring-integration/reference/htmlsingle/#channel-wiretap[implemented in] the Spring Integration EAI framework used by Spring XD). +A Tap allows you to "listen" to data while it is processed in an existing stream and process the data in a separate stream. The original stream is unaffected by the tap and isn't aware of its presence, similar to a phone wiretap. (https://www.enterpriseintegrationpatterns.com/WireTap.html[WireTap] is included in the standard catalog of EAI patterns and https://docs.spring.io/spring-integration/reference/htmlsingle/#channel-wiretap[implemented in] the Spring Integration EAI framework used by Spring XD). Simply put, a Tap is a stream that uses a point in another stream as a source. diff --git a/src/docs/asciidoc/Tuples.asciidoc b/src/docs/asciidoc/Tuples.asciidoc index 29e61b103..8a004dcc6 100644 --- a/src/docs/asciidoc/Tuples.asciidoc +++ b/src/docs/asciidoc/Tuples.asciidoc @@ -9,9 +9,9 @@ The underlying Message class that moves data from one processing step to the nex There are accessor methods that perform type conversion to the basic primitive types as well as BigDecimal and Date. This avoids you from having to cast the values to specific types. Instead you can rely on the Tuple's type conversion infastructure to perform the conversion. -The Tuple's types conversion is performed by Spring's http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html#core-convert[Type Conversion Infrastructure] which supports commonly encountered type conversions and is extensible. +The Tuple's types conversion is performed by Spring's https://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html#core-convert[Type Conversion Infrastructure] which supports commonly encountered type conversions and is extensible. -There are several overloads for getters that let you provide default values for primitive types should the field you are looking for not be found. Date format patterns and Locale aware NumberFormat conversion are also supported. A best effort has been made to preserve the functionality available in Spring Batch's http://static.springsource.org/spring-batch/2.1.x/apidocs/org/springframework/batch/item/file/transform/FieldSet.html[`FieldSet`] class that has been extensively used for parsing String based data in files. +There are several overloads for getters that let you provide default values for primitive types should the field you are looking for not be found. Date format patterns and Locale aware NumberFormat conversion are also supported. A best effort has been made to preserve the functionality available in Spring Batch's https://docs.spring.io/spring-batch/2.1.x/apidocs/org/springframework/batch/item/file/transform/FieldSet.html[`FieldSet`] class that has been extensively used for parsing String based data in files. ==== Creating a Tuple @@ -158,7 +158,7 @@ If you wish to use Spring XD Tuples in you project add the following dependencie [subs="attributes"] ---- //Add this repo to your repositories if it does not already exist. -maven { url "http://repo.spring.io/libs-snapshot"} +maven { url "https://repo.spring.io/libs-snapshot"} //Add this dependency compile 'org.springframework.xd:spring-xd-tuple:{appversion}' diff --git a/src/docs/asciidoc/Type-conversion.asciidoc b/src/docs/asciidoc/Type-conversion.asciidoc index e3cf36e67..14d240a84 100644 --- a/src/docs/asciidoc/Type-conversion.asciidoc +++ b/src/docs/asciidoc/Type-conversion.asciidoc @@ -29,7 +29,7 @@ Type conversion will likely come up when implementing a custom module which prod customPojoSource --outputType=application/json |p1 | p2 | ... | customPojoSink --inputType=application/x-java-object;type=com.acme.MyDomainType ---- -Note that the sink above does require the declared type to be in the module's classpath to perform the JSON to POJO conversion. Generally, POJO to JSON does not require the Java class. Once the payload is converted to JSON, Spring XD provided transformers and filters (p1, p2, etc.) can evaluate the payload contents using http://docs.spring.io/spring-integration/reference/html/spel.html[JsonPath functions in SpEL expressions]. Alternately, you can convert the JSON to a Tuple, as shown in the following example. +Note that the sink above does require the declared type to be in the module's classpath to perform the JSON to POJO conversion. Generally, POJO to JSON does not require the Java class. Once the payload is converted to JSON, Spring XD provided transformers and filters (p1, p2, etc.) can evaluate the payload contents using https://docs.spring.io/spring-integration/reference/html/spel.html[JsonPath functions in SpEL expressions]. Alternately, you can convert the JSON to a Tuple, as shown in the following example. ==== JSON to Tuple Sometimes it is convenient to convert JSON content to a Tuple in order to evaluate and access individual field values. @@ -65,7 +65,7 @@ foo | --inputType=application/x-java-serialized-object file [[mime-types-and-java-types]] === MIME types and Java types -Internally, Spring XD implements type conversion using Spring Integration's http://docs.spring.io/spring-integration/docs/latest-ga/reference/htmlsingle/#channel-configuration[data type channels]. The data type channel converts payloads to the configured data type using Spring's http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/converter/MessageConverter.html[MessageConverter]. +Internally, Spring XD implements type conversion using Spring Integration's https://docs.spring.io/spring-integration/docs/latest-ga/reference/htmlsingle/#channel-configuration[data type channels]. The data type channel converts payloads to the configured data type using Spring's https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/messaging/converter/MessageConverter.html[MessageConverter]. NOTE: The use of _MessageCoverter_ for data type channels was introduced in Spring Integration 4 to pass the Message to the converter method to allow it to access the Message's _content-type_ header. This provides greater flexibility. For example, it is now possible to support multiple strategies for converting a String or byte array to a POJO, based on the content-type header. diff --git a/src/docs/asciidoc/Using-MQTT-On-XD.asciidoc b/src/docs/asciidoc/Using-MQTT-On-XD.asciidoc index 51f3299e5..f81ffc6e5 100644 --- a/src/docs/asciidoc/Using-MQTT-On-XD.asciidoc +++ b/src/docs/asciidoc/Using-MQTT-On-XD.asciidoc @@ -4,7 +4,7 @@ === Introduction MQTT(MQ for telemetry transport) is a machine to machine connectivity protocol. It is a lightweight pub/sub protocol for devices where bandwidth and battery power are at a premium. This purpose of this document is to show you how to: enable the RabbitMQ MQTT plugin, setup a Spring XD MQTT source and Spring MQTT sink. -NOTE: This document assumes that you have a RabbitMQ installed and running. If you don’t have RabbitMQ available already you can download it from http://www.rabbitmq.com/download.html. +NOTE: This document assumes that you have a RabbitMQ installed and running. If you don’t have RabbitMQ available already you can download it from https://www.rabbitmq.com/download.html. ==== Setting up MQTT on RabbitMQ If you are using RabbitMQ 3.3.4 or above then the MQTT plugin is already included with your deployment, however it is inactive. @@ -43,7 +43,7 @@ Note: if you do see the [E] next to the rabbitmq_mqtt then your plugin is enable d. Restart your RabbitMQ. ==== Rabbit MQTT Plugin settings -The MQTT plugin can be can be configured via the rabbitmq.config file and this is covered here: http://www.rabbitmq.com/mqtt.html. +The MQTT plugin can be can be configured via the rabbitmq.config file and this is covered here: https://www.rabbitmq.com/mqtt.html. The settings for the MQTT plugin that Spring XD are concerned about are as follows: 1. allow_anonymous Determines if the user must supply a user name or password. If true then the plugin will use the default_user and default password enumerated below. If false the Spring XD source or sink must provide the username and password Default: true diff --git a/src/docs/asciidoc/XD-Distributed-Runtime.asciidoc b/src/docs/asciidoc/XD-Distributed-Runtime.asciidoc index 9bb4c5015..d6e7ec94e 100644 --- a/src/docs/asciidoc/XD-Distributed-Runtime.asciidoc +++ b/src/docs/asciidoc/XD-Distributed-Runtime.asciidoc @@ -4,19 +4,19 @@ === Introduction This document describes what's happening "under the hood" of the Spring XD Distributed Runtime (DIRT) and in particular, how the runtime architecture achieves high availability and failover in a clustered production environment. See xref:Running-Distributed-Mode[Running in Distributed Mode] for more information on installing and running Spring XD in distributed mode. -This discussion focuses on Spring XD's core runtime components and the role of http://zookeeper.apache.org[ZooKeeper] in managing the state of the Spring XD cluster and enabling automatic recovery from failures. +This discussion focuses on Spring XD's core runtime components and the role of https://zookeeper.apache.org[ZooKeeper] in managing the state of the Spring XD cluster and enabling automatic recovery from failures. === Configuring Spring XD for High Availabilty(HA) A production Spring XD environment is typically distributed among multiple hosts in a clustered environment. Spring XD scales horizontally when you add container instances. In the simplest case, all containers are replicas, that is each instance is running on an identically configured host and modules are deployed to any available container in a round-robin fashion. However, this simplifying assumption does not address real production scenarios in which more control is requred in order to optimize resource utilization. To this end, Spring XD supports a flexible algorithm which allows you to match module deployments to specific container configurations. The container matching algorithm will be covered in more detail later, but for now, let's assume the simple case. Running multiple containers not only enables horizontal scalability, but enables failure recovery. If a container becomes unavailable due to an unrecoverable connection loss, any modules currently deployed to that container will be deployed automatically to the other available instances. -Spring XD requires that a single active Admin server handle interactions with the containers, such as stream deployment requests, as these types of operations must be processed serially in the order received. Without a backup, the Admin server becomes single point of failure. Therefore, two (or more for the risk averse) Admin servers are recommended for a production environment. Note that every Admin server can handle all requests via xref:REST-API[REST] endpoints but only one instance, the "Leader", will actually perform requests that update the runtime state. If the Leader goes down, another available Admin server will assume the leader role. http://curator.apache.org/curator-recipes/leader-election.html[Leader Election] is an example of a common feature for distributed systems provided by the http://curator.apache.org[Curator Framework] which sits on top of ZooKeeper. +Spring XD requires that a single active Admin server handle interactions with the containers, such as stream deployment requests, as these types of operations must be processed serially in the order received. Without a backup, the Admin server becomes single point of failure. Therefore, two (or more for the risk averse) Admin servers are recommended for a production environment. Note that every Admin server can handle all requests via xref:REST-API[REST] endpoints but only one instance, the "Leader", will actually perform requests that update the runtime state. If the Leader goes down, another available Admin server will assume the leader role. https://curator.apache.org/curator-recipes/leader-election.html[Leader Election] is an example of a common feature for distributed systems provided by the https://curator.apache.org[Curator Framework] which sits on top of ZooKeeper. An HA Spring XD installation also requires that external servers - ZooKeeper, messaging middleware, and data stores needed for xref:Running-Distributed-Mode[running Spring XD in distributed mode] must be configured for HA as well. Please consult the product documentation for specific recommendations regarding each of these external components. Also see xref:MessageBus[Message Bus Configuration] for tips on configuring the MessageBus for HA, error handling, etc. === ZooKeeper Overview -In the previous section, we claimed that if a container goes down, Spring XD will redeploy any modules deployed on that instance to another available container. We also claimed that if the Admin Leader goes down, another Admin server will assume that role. http://zookeeper.apache.org[ZooKeeper] is what makes this all possible. ZooKeeper is a widely used Apache project designed primarily for distributed system management and coordination. This section will cover some basic concepts necessary to understand its role in Spring XD. See https://cwiki.apache.org/confluence/display/ZOOKEEPER/Index[The ZooKeeper Wiki] for a more complete overview. +In the previous section, we claimed that if a container goes down, Spring XD will redeploy any modules deployed on that instance to another available container. We also claimed that if the Admin Leader goes down, another Admin server will assume that role. https://zookeeper.apache.org[ZooKeeper] is what makes this all possible. ZooKeeper is a widely used Apache project designed primarily for distributed system management and coordination. This section will cover some basic concepts necessary to understand its role in Spring XD. See https://cwiki.apache.org/confluence/display/ZOOKEEPER/Index[The ZooKeeper Wiki] for a more complete overview. ZooKeeper is based on a simple hierarchical data structure, formally a tree, and conceptually and semantically similar to a file directory structure. As such, data is stored in _nodes_. A node is referenced via a _path_, for example, _/xd/streams/mystream_. Each node can store additional data, serialized as a byte array. In Spring XD, all data is a java.util.Map serialized as JSON. The following figure shows the Spring XD schema: @@ -40,7 +40,7 @@ image::images/xd-cluster.png[Spring XD and ZK Ensemble, width=500] === The Admin Server Internals -Assuming more than one Admin instance is running, Each instance requests leadership at start up. If there is already a designated leader, the instance will watch the _xd/admin_ node to be notified if the Leader goes away. The instance designated as the "Leader", using the Leader Selector recipe provided by http://curator.apache.org[Curator], a ZooKeeper client library that implements some common patterns. Curator also provides some Listener callback interfaces that the client can register on a node. The AdminServer creates the top level nodes, depicted in the figure above: +Assuming more than one Admin instance is running, Each instance requests leadership at start up. If there is already a designated leader, the instance will watch the _xd/admin_ node to be notified if the Leader goes away. The instance designated as the "Leader", using the Leader Selector recipe provided by https://curator.apache.org[Curator], a ZooKeeper client library that implements some common patterns. Curator also provides some Listener callback interfaces that the client can register on a node. The AdminServer creates the top level nodes, depicted in the figure above: * */xd/admins* - children are ephemeral nodes for each available Admin instance and used for Leader Selector * */xd/containers* - children are ephemeral nodes containing runtime attributes including hostname,process id, ip address, and user defined attributes for each container instance. diff --git a/src/docs/asciidoc/stylesheets/asciidoctor.css b/src/docs/asciidoc/stylesheets/asciidoctor.css index dbd98bff4..4ee644358 100644 --- a/src/docs/asciidoc/stylesheets/asciidoctor.css +++ b/src/docs/asciidoc/stylesheets/asciidoctor.css @@ -1,7 +1,7 @@ /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/colony.css b/src/docs/asciidoc/stylesheets/colony.css index cc8221bb6..6df0f0aad 100644 --- a/src/docs/asciidoc/stylesheets/colony.css +++ b/src/docs/asciidoc/stylesheets/colony.css @@ -1,7 +1,7 @@ /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/foundation-lime.css b/src/docs/asciidoc/stylesheets/foundation-lime.css index c9355ebe6..95b8b4aba 100644 --- a/src/docs/asciidoc/stylesheets/foundation-lime.css +++ b/src/docs/asciidoc/stylesheets/foundation-lime.css @@ -1,7 +1,7 @@ /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/foundation-potion.css b/src/docs/asciidoc/stylesheets/foundation-potion.css index 86030537c..7a19f0aad 100644 --- a/src/docs/asciidoc/stylesheets/foundation-potion.css +++ b/src/docs/asciidoc/stylesheets/foundation-potion.css @@ -1,7 +1,7 @@ /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/foundation.css b/src/docs/asciidoc/stylesheets/foundation.css index 482e2ef14..b0425152f 100644 --- a/src/docs/asciidoc/stylesheets/foundation.css +++ b/src/docs/asciidoc/stylesheets/foundation.css @@ -1,7 +1,7 @@ /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/github.css b/src/docs/asciidoc/stylesheets/github.css index d0f2d320d..770a6c5fb 100644 --- a/src/docs/asciidoc/stylesheets/github.css +++ b/src/docs/asciidoc/stylesheets/github.css @@ -1,7 +1,7 @@ /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/golo.css b/src/docs/asciidoc/stylesheets/golo.css index d50ec1b8b..1781d6b5c 100644 --- a/src/docs/asciidoc/stylesheets/golo.css +++ b/src/docs/asciidoc/stylesheets/golo.css @@ -1,8 +1,8 @@ -@import url(http://fonts.googleapis.com/css?family=Varela+Round|Open+Sans:400italic,700italic,400,700); +@import url(https://fonts.googleapis.com/css?family=Varela+Round|Open+Sans:400italic,700italic,400,700); /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/iconic.css b/src/docs/asciidoc/stylesheets/iconic.css index 590845b56..549e02f26 100644 --- a/src/docs/asciidoc/stylesheets/iconic.css +++ b/src/docs/asciidoc/stylesheets/iconic.css @@ -1,9 +1,9 @@ -/* Inspired by the O'Reilly typography and the Atlas user manual | http://oreilly.com */ -@import url(http://fonts.googleapis.com/css?family=Lato:400,700,700italic,400italic); +/* Inspired by the O'Reilly typography and the Atlas user manual | https://oreilly.com */ +@import url(https://fonts.googleapis.com/css?family=Lato:400,700,700italic,400italic); /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/maker.css b/src/docs/asciidoc/stylesheets/maker.css index 0ad334577..062e5b546 100644 --- a/src/docs/asciidoc/stylesheets/maker.css +++ b/src/docs/asciidoc/stylesheets/maker.css @@ -1,8 +1,8 @@ -@import url(http://fonts.googleapis.com/css?family=Glegoo); +@import url(https://fonts.googleapis.com/css?family=Glegoo); /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/readthedocs.css b/src/docs/asciidoc/stylesheets/readthedocs.css index e2223f61e..ed137bf19 100644 --- a/src/docs/asciidoc/stylesheets/readthedocs.css +++ b/src/docs/asciidoc/stylesheets/readthedocs.css @@ -1,7 +1,7 @@ /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/riak.css b/src/docs/asciidoc/stylesheets/riak.css index e70186c88..2a7b2aedc 100644 --- a/src/docs/asciidoc/stylesheets/riak.css +++ b/src/docs/asciidoc/stylesheets/riak.css @@ -1,10 +1,10 @@ /* Derived from the Riak documentation theme developed by Basho Technologies, Inc. | CC BY 3.0 License | http://docs.basho.org */ -@import url(http://fonts.googleapis.com/css?family=Titillium+Web:400,700); -@import url(http://fonts.googleapis.com/css?family=Noticia+Text:400,400italic); +@import url(https://fonts.googleapis.com/css?family=Titillium+Web:400,700); +@import url(https://fonts.googleapis.com/css?family=Noticia+Text:400,400italic); /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/rocket-panda.css b/src/docs/asciidoc/stylesheets/rocket-panda.css index fbaa0d6e1..5908b9dfb 100644 --- a/src/docs/asciidoc/stylesheets/rocket-panda.css +++ b/src/docs/asciidoc/stylesheets/rocket-panda.css @@ -1,8 +1,8 @@ -@import url(http://openshift.redhat.com/app/assets-20130701203230/overpass.css); +@import url(https://openshift.redhat.com/app/assets-20130701203230/overpass.css); /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */ diff --git a/src/docs/asciidoc/stylesheets/rubygems.css b/src/docs/asciidoc/stylesheets/rubygems.css index 7eb9efb44..f1318f6ba 100644 --- a/src/docs/asciidoc/stylesheets/rubygems.css +++ b/src/docs/asciidoc/stylesheets/rubygems.css @@ -1,7 +1,7 @@ /*! normalize.css v2.1.2 | MIT License | git.io/normalize */ /* ========================================================================== HTML5 display definitions ========================================================================== */ /** Correct `block` display not defined in IE 8/9. */ -@import url(http://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); +@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { display: block; } /** Correct `inline-block` display not defined in IE 8/9. */