From 6ab0711fc26ce135334db43bc9e4af5ac2426ced Mon Sep 17 00:00:00 2001 From: Ben Klein Date: Tue, 8 Dec 2015 12:32:33 -0600 Subject: [PATCH 1/3] correct task name in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ed5a880..77eeb19 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ The project is built with Gradle. The [Gradle wrapper](https://docs.gradle.org/c ### To generate Javadoc API documentation - ./gradlew jar + ./gradlew api ### To list all available tasks From e610fb2523670a10911058953e3486b9e5ed50c5 Mon Sep 17 00:00:00 2001 From: Ben Klein Date: Thu, 28 Jan 2016 20:58:43 -0600 Subject: [PATCH 2/3] Change "Spring Cloud" to "Spring Cloud Connectors" --- .../asciidoc/spring-cloud-cloud-foundry-connector.adoc | 2 +- docs/src/main/asciidoc/spring-cloud-connectors.adoc | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/src/main/asciidoc/spring-cloud-cloud-foundry-connector.adoc b/docs/src/main/asciidoc/spring-cloud-cloud-foundry-connector.adoc index 39389c7..82455a0 100644 --- a/docs/src/main/asciidoc/spring-cloud-cloud-foundry-connector.adoc +++ b/docs/src/main/asciidoc/spring-cloud-cloud-foundry-connector.adoc @@ -9,7 +9,7 @@ The Cloud Foundry Connector is part of the <> project. -This connector discovers services that are bound to an application running in Cloud Foundry. (Since Cloud Foundry enumerates each service in a consistent format, Spring Cloud does not care which service provider is providing it.) +This connector discovers services that are bound to an application running in Cloud Foundry. (Since Cloud Foundry enumerates each service in a consistent format, Spring Cloud Connectors does not care which service provider is providing it.) == Cloud Detection diff --git a/docs/src/main/asciidoc/spring-cloud-connectors.adoc b/docs/src/main/asciidoc/spring-cloud-connectors.adoc index 4bc6e02..bb0ae8e 100644 --- a/docs/src/main/asciidoc/spring-cloud-connectors.adoc +++ b/docs/src/main/asciidoc/spring-cloud-connectors.adoc @@ -36,7 +36,7 @@ The project contains three major submodules. * The cloud connectors: ** **Spring Cloud Cloud Foundry Connector**: Connector for link:http://cloudfoundry.org/[Cloud Foundry]. ** **Spring Cloud Heroku Connector**: Connector for link:https://www.heroku.com/[Heroku]. - ** **Spring Cloud local-configuration Connector**: Properties-based connector for manually providing configuration information during development or testing. Allows use of the same Spring Cloud configuration wiring in all stages of application deployment. + ** **Spring Cloud local-configuration Connector**: Properties-based connector for manually providing configuration information during development or testing. Allows use of the same Spring Cloud Connectors configuration wiring in all stages of application deployment. == Getting Started @@ -132,7 +132,7 @@ This core library provides programmatic access to application and service inform [NOTE] ==== -If you are using Spring Cloud in a Spring application, you should consider <<_spring_service_connector,automatically injecting Spring beans>> instead. +If you are using Spring Cloud Connectors in a Spring application, you should consider <<_spring_service_connector,automatically injecting Spring beans>> instead. ==== * Include the desired cloud connectors on the runtime classpath, <<_getting_started,as described in the main documentation>>. @@ -169,7 +169,7 @@ List databaseInfos = cloud.getServiceInfos(DataSource.class); + [source,java] ---- -// Alternatively, let Spring Cloud create a service connector for you +// Alternatively, let Spring Cloud Connectors create a service connector for you String serviceId = "inventory-db"; DataSource ds = cloud.getServiceConnector(serviceId, DataSource.class, null /* default config */); @@ -189,7 +189,7 @@ See <>. == local-configuration Connector -This connector provides the ability to configure Spring Cloud services locally for development or testing. **The current implementation reads from Java properties only.** +This connector provides the ability to configure Spring Cloud Connectors services locally for development or testing. **The current implementation reads from Java properties only.** === Quick Start @@ -241,7 +241,7 @@ To provide the maximum configuration flexibility, the connector will override an === Activating the Connector -Spring Cloud Core expects exactly one cloud connector to match the runtime environment. This connector identifies the “local cloud” by the presence of a property, in a configuration properties file or in the system properties, named `spring.cloud.appId`. This property will be used in the `ApplicationInstanceInfo`. +Spring Cloud Connectors Core expects exactly one cloud connector to match the runtime environment. This connector identifies the “local cloud” by the presence of a property, in a configuration properties file or in the system properties, named `spring.cloud.appId`. This property will be used in the `ApplicationInstanceInfo`. === Service Definitions From e04004e2df851e2b2958189c263e66dfe1c9222a Mon Sep 17 00:00:00 2001 From: Ben Klein Date: Wed, 3 Feb 2016 17:07:20 -0600 Subject: [PATCH 3/3] Add images directory; add to 'Extending' section --- .../images/spring-cloud-connectors-design.png | Bin 0 -> 88219 bytes .../asciidoc/spring-cloud-connectors.adoc | 47 ++++++++++++++---- 2 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 docs/src/main/asciidoc/images/spring-cloud-connectors-design.png diff --git a/docs/src/main/asciidoc/images/spring-cloud-connectors-design.png b/docs/src/main/asciidoc/images/spring-cloud-connectors-design.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4741160433bb1257e44a25df0ecaef87e6ddae GIT binary patch literal 88219 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�d&gBF@Clr4(% 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 i!2ka~K##UAu~g-H`cr#o`mO> section, your application can include cloud connectors for multiple cloud platforms. Spring Cloud Connectors Core activates the `CloudConnector` for the platform in which the application is running. That cloud connector's `ServiceInfoCreator` classes create `ServiceInfo` objects for the application's services, and the `ServiceConnectorCreator` classes use the `ServiceInfo` objects to create service connection objects for use in your application. + +image::spring-cloud-connectors-design.png[width=650, height=341, align="center"] + +You can extend Spring Cloud Connectors in any of three ways: + +1. **Cloud platform support.** Out of the box, Spring Cloud Connectors offers support for the Cloud Foundry and Heroku platforms. You can extend Spring Cloud Connectors to provide support for other cloud platforms and providers. ++ +Spring Cloud Connectors uses the http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/CloudConnector.html[`CloudConnector`] interface to provide cloud platform support. A `CloudConnector` implementation for a particular cloud platform is responsible for detecting when the application is running in that cloud platform, obtaining information about the application from the cloud platform, and obtaining information about the services that are bound to the application. +2. **Cloud service support.** You can extend Spring Cloud Connectors to support additional services, including services that are specific to your own environment or application. ++ +Spring Cloud Connectors uses two interfaces to provide cloud service support: ++ +* A http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/service/ServiceInfo.html[`ServiceInfo`] models the information required to connect to the service. In the case of a database service, a `ServiceInfo` implementation might include fields for host, port, database name, username, and password; in the case of a web service, it might include fields for URL and API key. ++ +* A http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/ServiceInfoCreator.html[`ServiceInfoCreator`] creates `ServiceInfo` objects based on the service information collected by a cloud connector. A `ServiceInfoCreator` implementation is specific to a cloud platform. +3. **Application framework support.** The <> creates service connectors with http://projects.spring.io/spring-data/[Spring Data] data types. You can extend Spring Cloud Connectors to provide service connection objects using another framework. ++ +Spring Cloud Connectors uses the http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/service/ServiceConnectorCreator.html[`ServiceConnectorCreator`] interface to provide framework support. A `ServiceConnectorCreator` creates service connectors using the service connection information provided by a `ServiceInfo` object. + +=== Adding Cloud Platform Support + +To allow Spring Cloud Connectors to detect a new cloud platform, add a cloud connector for the platform. + +A cloud connector determines whether the application is running in the specific cloud, identifies application information (such as the name and instance ID of the particular running instance), and maps bound services (such as URIs exposed in environment variables) as `ServiceInfo` objects. [TIP] ==== See the https://github.com/spring-cloud/spring-cloud-connectors/tree/master/spring-cloud-cloudfoundry-connector[Cloud Foundry Connector] and https://github.com/spring-cloud/spring-cloud-connectors/tree/master/spring-cloud-heroku-connector[Heroku Connector] for examples. ==== -Spring Cloud uses the https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html[Java SPI] to discover available connectors. +Spring Cloud Connectors uses the https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html[Java SPI] to discover available connectors. -Your connector classes must implement the http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/CloudConnector.html[`CloudConnector`] interface. It includes three methods: +Your connector class must implement the http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/CloudConnector.html[`CloudConnector`] interface, which includes three methods: * `boolean isInMatchingCloud()`: Determines whether the connector is operating in the cloud for which it provides support. + -Spring Cloud Connectors will call `isInMatchingCloud()` on each cloud connector included in an application. The first connector to respond `true` will be activated. +Spring Cloud Connectors Core calls `isInMatchingCloud()` on each cloud connector included in an application, and activates the first connector that responds `true`. * `ApplicationInstanceInfo getApplicationInstanceInfo()`: Returns information about the running application instance. + An `ApplicationInstanceInfo` must provide the instance id (`String`) and application id (`String`). Other properties can be added as needed to a `Map` and be returned via `getProperties()`. @@ -282,7 +307,7 @@ New cloud connectors should list the fully-qualified class name in the provider- === Adding Service Support -To allow Spring Cloud to discover a new type of service, create a `ServiceInfo` class containing the information necessary to connect to the service. If your service can be specified via a URI, extend http://docs.spring.io/autorepo/docs/spring-cloud/current/api/org/springframework/cloud/service/UriBasedServiceInfo.html[`UriBasedServiceInfo`] and provide the URI scheme in a call to the `super` constructor. +To allow Spring Cloud Connectors to discover a new type of service, create a http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/service/ServiceInfo.html[`ServiceInfo`] class containing the information necessary to connect to the service. If your service can be specified via a URI, extend http://docs.spring.io/autorepo/docs/spring-cloud/current/api/org/springframework/cloud/service/UriBasedServiceInfo.html[`UriBasedServiceInfo`] and provide the URI scheme in a call to the `super` constructor. The following class will expose information for a `HelloWorldService` available at `helloworld://username:password@host:port/Bonjour`. @@ -303,7 +328,7 @@ public class HelloWorldServiceInfo extends UriBasedServiceInfo { } ---- -After creating the `ServiceInfo` class, you will need to create a `ServiceInfoCreator` for each cloud platform you want to support. If you are adding service support for a cloud platform already supported by Spring Cloud Connectors, you will probably want to extend the appropriate creator base class(es). +After creating the `ServiceInfo` class, you will need to create a http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/ServiceInfoCreator.html[`ServiceInfoCreator`] for each cloud platform you want to support. If you are adding service support for a cloud platform already supported by Spring Cloud Connectors, you will probably want to extend the appropriate creator base class(es). [cols="2,8", width="100%"] |================================================================== @@ -331,16 +356,18 @@ Register your `ServiceInfoCreator` classes in the appropriate provider-configura |**local-configuration** | Add the fully-qualified class name for your creator to `META-INF/services/org.springframework.cloud.localconfig.LocalConfigServiceInfoCreator`. |========================================================================================================================================================================= -=== Adding Service Connectors +=== Adding Framework Support -To allow Spring Cloud to provide framework-specific service objects for supported cloud services, add a service connector for the framework. A service connector consumes a `ServiceInfo` discovered by the cloud connector and converts it into the appropriate service object (such as a `DataSource` in the case of a service definition that represents a SQL database). +To allow Spring Cloud Connectors to provide framework-specific service objects for supported cloud services, add a service connector for the framework. + +A service connector consumes a `ServiceInfo` for a service discovered by the cloud connector and converts it into the appropriate service object (such as a `DataSource` in the case of a service definition that represents a SQL database). [TIP] ==== Service connectors can be tightly bound to the framework whose service objects they are creating. For example, some connectors in the <<_spring_service_connector,Spring Service Connector>> create connection factories defined by Spring Data, for use in building Spring Data templates. ==== -Your connector classes must implement the http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/service/ServiceConnectorCreator.html[`ServiceConnectorCreator`] interface. It has three methods: +Your connector class must implement the http://docs.spring.io/autorepo/docs/spring-cloud/current/api/index.html?org/springframework/cloud/service/ServiceConnectorCreator.html[`ServiceConnectorCreator`] interface, which has three methods: * `SC create()`: Creates a service connection object from a given `ServiceInfo` and configuration. * `Class getServiceConnectorType()`: Returns the type of the connection object that will be created.