diff --git a/build.gradle b/build.gradle index 76442c2a..343e7136 100644 --- a/build.gradle +++ b/build.gradle @@ -1,131 +1,141 @@ apply plugin: 'base' buildscript { - repositories { - mavenCentral() - maven { url 'http://repo.spring.io/plugins-release' } - } - dependencies { - classpath("org.springframework.build.gradle:propdeps-plugin:0.0.7") - classpath("io.spring.gradle:spring-io-plugin:0.0.4.RELEASE") - } + repositories { + mavenCentral() + maven { url 'http://repo.spring.io/plugins-release' } + } + dependencies { + classpath("io.spring.gradle:propdeps-plugin:0.0.10.RELEASE") + classpath("io.spring.gradle:spring-io-plugin:0.0.8.RELEASE") + } } -apply plugin: 'java' -apply plugin: 'eclipse' -apply plugin: 'idea' -apply plugin: 'maven' -apply plugin: 'propdeps' -apply plugin: 'propdeps-maven' -apply plugin: 'propdeps-idea' -apply plugin: 'propdeps-eclipse' - -apply from: "${rootProject.projectDir}/publish-maven.gradle" - -if (project.hasProperty('platformVersion')) { - apply plugin: 'spring-io' - - // necessary to resolve the Spring IO versions (which may include snapshots) - repositories { - maven { url "https://repo.spring.io/libs-snapshot" } - } - - dependencyManagement { - springIoTestRuntime { - imports { - mavenBom "io.spring.platform:platform-bom:${platformVersion}" - } - } - } -} - -archivesBaseName = "spring-cloud-cloudfoundry-service-broker" -group = "org.springframework.cloud" -description = "Spring Cloud - Cloud Foundry Service Broker" - ext { - springBootVersion = '1.2.7.RELEASE' - hibernateValidatorVersion = '5.1.0.Final' - jsonPathVersion = '0.9.1' + springVersion = '4.3.12.RELEASE' + springSecurityVersion = '4.2.3.RELEASE' - javadocLinks = [ - 'http://docs.oracle.com/javase/8/docs/api/', - 'http://docs.spring.io/spring/docs/current/javadoc-api/', - ] as String[] + junitVersion = "4.12" + mockitoVersion = "2.7.22" + hamcrestVersion = "1.3" + jsonPathVersion = "2.4.0" + + javadocLinks = [ + 'http://docs.oracle.com/javase/8/docs/api/', + 'http://docs.spring.io/spring/docs/current/javadoc-api/', + ] as String[] } -sourceCompatibility = 1.7 -targetCompatibility = 1.7 +description = "Spring Cloud Service Broker" + +allprojects { + group = "org.springframework.cloud" + + apply plugin: 'java' + apply plugin: 'eclipse' + apply plugin: 'idea' + apply plugin: 'maven' + apply plugin: 'propdeps' + apply plugin: 'propdeps-maven' + apply plugin: 'propdeps-idea' + apply plugin: 'propdeps-eclipse' + + apply from: "${rootProject.projectDir}/publish-maven.gradle" + + if (project.hasProperty('platformVersion')) { + apply plugin: 'spring-io' + + // necessary to resolve the Spring IO versions (which may include snapshots) + repositories { + maven { url "https://repo.spring.io/libs-snapshot" } + } + + dependencyManagement { + springIoTestRuntime { + imports { + mavenBom "io.spring.platform:platform-bom:${platformVersion}" + } + } + } + } -repositories { - mavenCentral() } -dependencies { - compile("org.springframework.boot:spring-boot-starter-web:${springBootVersion}") - compile("org.springframework.boot:spring-boot-starter-security:${springBootVersion}") - compile("org.hibernate:hibernate-validator:${hibernateValidatorVersion}") - compile("commons-beanutils:commons-beanutils:1.9.2") - provided("org.projectlombok:lombok:1.16.6") +subprojects { + sourceCompatibility = 1.8 + targetCompatibility = 1.8 - testCompile("org.springframework.boot:spring-boot-starter-test:${springBootVersion}") - testCompile("com.jayway.jsonpath:json-path:${jsonPathVersion}") + repositories { + mavenCentral() + } } -task testsJar(type: Jar) { - classifier = 'tests' - from sourceSets.test.output -} +configure(rootProject) { + task testsJar(type: Jar) { + classifier = 'tests' + from sourceSets.test.output + } -task sourcesJar(type: Jar, dependsOn: classes) { - classifier = 'sources' - from sourceSets.main.allSource -} + task sourcesJar(type: Jar, dependsOn: classes) { + classifier = 'sources' + from sourceSets.main.allSource + } -task javadocJar(type: Jar, dependsOn: javadoc) { - classifier = 'javadoc' - from javadoc -} + task javadocJar(type: Jar, dependsOn: javadoc) { + classifier = 'javadoc' + from javadoc + } -task apidocs(type: Javadoc) { - group = "Documentation" - description = "Generates aggregated Javadoc API documentation." - title = "${project.description} ${version} API" - options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED - options.author = true - options.header = rootProject.description - options.links(project.ext.javadocLinks) + task api(type: Javadoc) { + group = "Documentation" + description = "Generates aggregated Javadoc API documentation." + title = "${rootProject.description} ${version} API" - source project.sourceSets.main.allJava + options.memberLevel = org.gradle.external.javadoc.JavadocMemberLevel.PROTECTED + options.author = true + options.header = rootProject.description + options.links(project.ext.javadocLinks) - classpath = files(project.sourceSets.main.compileClasspath) + source subprojects.collect { project -> + project.sourceSets.main.allJava + } - maxMemory = "1024m" - destinationDir = new File(buildDir, "apidocs") -} + classpath = files(subprojects.collect { project -> + project.sourceSets.main.compileClasspath + }) -task docsZip(type: Zip) { - group = 'Distribution' - classifier = 'docs' - description = "Builds -${classifier} archive containing api and reference." + maxMemory = "1024m" + destinationDir = new File(buildDir, "api") + } - from(apidocs) { - into 'apidocs' - } -} + task docsZip(type: Zip) { + group = 'Distribution' + classifier = 'docs' + description = "Builds -${classifier} archive containing api and reference " + + "for deployment." -artifacts { - archives testsJar - archives sourcesJar - archives javadocJar - archives docsZip -} + from(api) { + into 'api' + } + } -task dist(dependsOn: assemble) { - group = 'Distribution' - description = 'Builds -dist and -docs distribution archives.' + artifacts { + archives docsZip + } + + artifacts { + archives testsJar + archives sourcesJar + archives javadocJar + archives docsZip + } + + task dist(dependsOn: assemble) { + group = 'Distribution' + description = 'Builds -dist and -docs distribution archives.' + } } task wrapper(type: Wrapper) { - gradleVersion = '2.14' + gradleVersion = '3.5' } diff --git a/gradle.properties b/gradle.properties index b118483d..dfe1192e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1 @@ -version=1.0.3.BUILD-SNAPSHOT +version=2.0.0.BUILD-SNAPSHOT diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index b7612167..7dff28f9 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 64728fb8..9a0ead72 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Jan 20 16:16:16 CST 2017 +#Mon Nov 06 15:59:38 CST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip diff --git a/gradlew b/gradlew index 91a7e269..cccdd3d5 100755 --- a/gradlew +++ b/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,47 +6,6 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" - -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" - -warn ( ) { - echo "$*" -} - -die ( ) { - echo - echo "$*" - echo - exit 1 -} - -# OS specific support (must be 'true' or 'false'). -cygwin=false -msys=false -darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; -esac - -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" @@ -61,9 +20,49 @@ while [ -h "$PRG" ] ; do fi done SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- +cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" -cd "$SAVED" >&- +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 8a0b282a..f9553162 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= - set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome @@ -46,10 +46,9 @@ echo location of your Java installation. goto fail :init -@rem Get command-line arguments, handling Windowz variants +@rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args -if "%@eval[2+2]" == "4" goto 4NT_args :win9xME_args @rem Slurp the command line arguments. @@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* -goto execute - -:4NT_args -@rem Get arguments from the 4NT Shell from JP Software -set CMD_LINE_ARGS=%$ :execute @rem Setup the command line diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..70a128a6 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,7 @@ +rootProject.name = 'spring-cloud-service-broker' + +include ':spring-cloud-open-service-broker' +include ':spring-cloud-starter-service-broker-webmvc' + +project(':spring-cloud-open-service-broker').projectDir = "$rootDir/spring-cloud-open-service-broker" as File +project(':spring-cloud-starter-service-broker-webmvc').projectDir = "$rootDir/spring-cloud-starter-service-broker-webmvc" as File diff --git a/spring-cloud-open-service-broker/build.gradle b/spring-cloud-open-service-broker/build.gradle new file mode 100644 index 00000000..8922de3a --- /dev/null +++ b/spring-cloud-open-service-broker/build.gradle @@ -0,0 +1,31 @@ +description = "Spring Cloud Open Service Broker" + +dependencies { + compile("org.springframework:spring-web:${springVersion}") + compile("org.springframework.security:spring-security-core:${springSecurityVersion}") + compile("com.fasterxml.jackson.core:jackson-databind:2.8.10") + compile("org.hibernate:hibernate-validator:5.3.5.Final") + compile("commons-beanutils:commons-beanutils:1.9.3") + compile("org.slf4j:slf4j-api:1.7.12") + provided("org.projectlombok:lombok:1.16.6") + + testCompile("org.springframework:spring-test:${springVersion}") + + testCompile("junit:junit:${junitVersion}") + testCompile("org.hamcrest:hamcrest-library:${hamcrestVersion}") + testCompile("org.mockito:mockito-core:${mockitoVersion}") + testCompile("com.jayway.jsonpath:json-path:${jsonPathVersion}") +} + +task testsJar(type: Jar) { + classifier = 'tests' + from sourceSets.test.output +} + +configurations { + testOutput +} + +artifacts { + testOutput testsJar +} \ No newline at end of file diff --git a/src/main/java/org/springframework/cloud/servicebroker/controller/BaseController.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/BaseController.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/controller/BaseController.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/BaseController.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/controller/CatalogController.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/CatalogController.java similarity index 86% rename from src/main/java/org/springframework/cloud/servicebroker/controller/CatalogController.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/CatalogController.java index c8e4dcd1..e4b57ccf 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/controller/CatalogController.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/CatalogController.java @@ -22,12 +22,9 @@ public class CatalogController extends BaseController { super(service); } - @RequestMapping(value = { - "/v2/catalog", - "{cfInstanceId}/v2/catalog" - }, method = RequestMethod.GET) + @RequestMapping(value = {"/v2/catalog", "{cfInstanceId}/v2/catalog"}, method = RequestMethod.GET) public Catalog getCatalog() { - log.debug("getCatalog()"); + log.debug("Retrieving catalog"); return catalogService.getCatalog(); } } diff --git a/src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingController.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingController.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingController.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingController.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceController.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceController.java similarity index 98% rename from src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceController.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceController.java index 9421b418..0198e3b4 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceController.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceController.java @@ -39,7 +39,7 @@ import static org.springframework.cloud.servicebroker.model.ServiceBrokerRequest /** * See: http://docs.cloudfoundry.org/services/api.html - * + * * @author sgreenberg@pivotal.io * @author Scott Frederick */ @@ -50,7 +50,7 @@ public class ServiceInstanceController extends BaseController { private ServiceInstanceService service; @Autowired - public ServiceInstanceController(CatalogService catalogService, ServiceInstanceService serviceInstanceService) { + public ServiceInstanceController(CatalogService catalogService, ServiceInstanceService serviceInstanceService) { super(catalogService); this.service = serviceInstanceService; } diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerApiVersionException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerApiVersionException.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerApiVersionException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerApiVersionException.java index ca413c90..9d6e0d0a 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerApiVersionException.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerApiVersionException.java @@ -13,5 +13,5 @@ public class ServiceBrokerApiVersionException extends RuntimeException { + "expected version=" + expectedVersion + ", provided version = " + providedVersion); } - + } diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerAsyncRequiredException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerAsyncRequiredException.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerAsyncRequiredException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerAsyncRequiredException.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerException.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerException.java index dd64a22f..eb97df19 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerException.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerException.java @@ -3,7 +3,7 @@ package org.springframework.cloud.servicebroker.exception; /** * General exception for underlying broker errors (like connectivity to the service * being brokered). - * + * * @author sgreenberg@pivotal.io * */ diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerInvalidParametersException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerInvalidParametersException.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerInvalidParametersException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceBrokerInvalidParametersException.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceDefinitionDoesNotExistException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceDefinitionDoesNotExistException.java similarity index 98% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceDefinitionDoesNotExistException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceDefinitionDoesNotExistException.java index 96bb0c3e..8de0139a 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceDefinitionDoesNotExistException.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceDefinitionDoesNotExistException.java @@ -2,15 +2,15 @@ package org.springframework.cloud.servicebroker.exception; /** * Thrown to indicate that a request includes a service definition ID does not exist. - * + * * @author sgreenberg@pivotal.io */ public class ServiceDefinitionDoesNotExistException extends RuntimeException { - + private static final long serialVersionUID = -62090827040416788L; public ServiceDefinitionDoesNotExistException(String serviceDefinitionId) { super("Service definition does not exist: id=" + serviceDefinitionId); } - + } \ No newline at end of file diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingDoesNotExistException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingDoesNotExistException.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingDoesNotExistException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingDoesNotExistException.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingExistsException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingExistsException.java similarity index 98% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingExistsException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingExistsException.java index 4c0f014c..2db204bb 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingExistsException.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceBindingExistsException.java @@ -2,13 +2,13 @@ package org.springframework.cloud.servicebroker.exception; /** * Thrown to indicate that a duplicate request to bind to a service instance is received. - * + * * @author sgreenberg@pivotal.io */ public class ServiceInstanceBindingExistsException extends RuntimeException { private static final long serialVersionUID = -914571358227517785L; - + public ServiceInstanceBindingExistsException(String serviceInstanceId, String bindingId) { super("Service instance binding already exists: " + "serviceInstanceId=" + serviceInstanceId diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceDoesNotExistException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceDoesNotExistException.java similarity index 98% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceDoesNotExistException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceDoesNotExistException.java index f9e9eebf..2bb30411 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceDoesNotExistException.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceDoesNotExistException.java @@ -2,13 +2,13 @@ package org.springframework.cloud.servicebroker.exception; /** * Thrown to indicate that a request is received for an unknown service instance ID. - * + * * @author sgreenberg@pivotal.io */ public class ServiceInstanceDoesNotExistException extends RuntimeException { - + private static final long serialVersionUID = -1879753092397657116L; - + public ServiceInstanceDoesNotExistException(String serviceInstanceId) { super("Service instance does not exist: id=" + serviceInstanceId); } diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceExistsException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceExistsException.java similarity index 98% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceExistsException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceExistsException.java index e79e19c9..8597225f 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceExistsException.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceExistsException.java @@ -2,13 +2,13 @@ package org.springframework.cloud.servicebroker.exception; /** * Thrown to indicate that a duplicate service instance creation request is received. - * + * * @author sgreenberg@pivotal.io */ public class ServiceInstanceExistsException extends RuntimeException { private static final long serialVersionUID = -914571358227517785L; - + public ServiceInstanceExistsException(String serviceInstanceId, String serviceDefinitionId) { super("Service instance with the given ID already exists: " + "serviceInstanceId=" + serviceInstanceId + diff --git a/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceUpdateNotSupportedException.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceUpdateNotSupportedException.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceUpdateNotSupportedException.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/exception/ServiceInstanceUpdateNotSupportedException.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequest.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequest.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/AsyncRequiredErrorMessage.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncRequiredErrorMessage.java similarity index 86% rename from src/main/java/org/springframework/cloud/servicebroker/model/AsyncRequiredErrorMessage.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncRequiredErrorMessage.java index 04f8e239..1d182c51 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/AsyncRequiredErrorMessage.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncRequiredErrorMessage.java @@ -10,9 +10,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class AsyncRequiredErrorMessage extends ErrorMessage { public final static String ASYNC_REQUIRED_ERROR = "AsyncRequired"; - + /** - * This broker requires asynchronous processing. + * This broker requires asynchronous processing. * * @param description user facing error message. */ @@ -21,7 +21,7 @@ public class AsyncRequiredErrorMessage extends ErrorMessage { } @JsonProperty("error") - public String getError() { + public String getError() { return ASYNC_REQUIRED_ERROR; } } diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceRequest.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceRequest.java index fe72ada3..3a7283a1 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceRequest.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceRequest.java @@ -21,7 +21,7 @@ public abstract class AsyncServiceInstanceRequest extends ServiceBrokerRequest { * true value indicates that clients do allow asynchronous processing. */ protected boolean asyncAccepted; - + public AsyncServiceInstanceRequest() { } } diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceResponse.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceResponse.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceResponse.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/AsyncServiceInstanceResponse.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/BindResource.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/BindResource.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/BindResource.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/BindResource.java diff --git a/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/BrokerApiVersion.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/BrokerApiVersion.java new file mode 100644 index 00000000..cd152c3f --- /dev/null +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/BrokerApiVersion.java @@ -0,0 +1,79 @@ +/* + * Copyright 2002-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.servicebroker.model; + +/** + * + */ +public class BrokerApiVersion { + public final static String DEFAULT_API_VERSION_HEADER = "X-Broker-Api-Version"; + + public final static String API_VERSION_ANY = "*"; + public final static String API_VERSION_CURRENT = "2.13"; + + private final String brokerApiVersionHeader; + + private final String apiVersion; + + /** + * Specify the name of the service broker API version header and the API version supported by the service broker. + * + * @param apiVersionHeader the name of the HTTP header field expected to contain the + * service broker API version of the service broker client + * @param apiVersion the version of the service broker API supported by the broker; a value of + * {@literal null} or {@literal API_VERSION_ANY} will disable API version validation + */ + public BrokerApiVersion(String apiVersionHeader, String apiVersion) { + this.brokerApiVersionHeader = apiVersionHeader; + this.apiVersion = apiVersion; + } + + /** + * Specify the service broker API version supported by the service broker. + * + * @param apiVersion the version of the broker API supported by the broker; a value of {@literal null} + * or {@literal API_VERSION_ANY} will disable API version validation + */ + public BrokerApiVersion(String apiVersion) { + this(DEFAULT_API_VERSION_HEADER, apiVersion); + } + + /** + * Specify that service broker API validation should be disabled. + */ + public BrokerApiVersion() { + this(API_VERSION_ANY); + } + + /** + * Get the service broker API version supported by the service broker. + * + * @return the service broker API version supported by the service broker + */ + public String getApiVersion() { + return apiVersion; + } + + /** + * Get the name of the service broker API version header. + * + * @return the name of the service broker API version header + */ + public String getBrokerApiVersionHeader() { + return brokerApiVersionHeader; + } +} diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/Catalog.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Catalog.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/model/Catalog.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Catalog.java index c13f42da..35a0483b 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/Catalog.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Catalog.java @@ -14,7 +14,7 @@ import java.util.List; /** * The catalog of services offered by the service broker. - * + * * @author sgreenberg@pivotal.io * @author Scott Frederick */ @@ -41,4 +41,3 @@ public class Catalog { this.serviceDefinitions = serviceDefinitions; } } - diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/CloudFoundryContext.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CloudFoundryContext.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/CloudFoundryContext.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CloudFoundryContext.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/Context.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Context.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/Context.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Context.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceAppBindingResponse.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceAppBindingResponse.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceAppBindingResponse.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceAppBindingResponse.java index c7ef6f18..8cf87c37 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceAppBindingResponse.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceAppBindingResponse.java @@ -13,7 +13,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; /** * Details of a response to a request to create a new service instance binding for an application. - * + * * @author sgreenberg@pivotal.io * @author Josh Long * @author Scott Frederick diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequest.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequest.java index 731eaf4a..ce9b3bd5 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequest.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequest.java @@ -15,7 +15,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; /** * Details of a request to bind to a service instance binding. - * + * * @author sgreenberg@pivotal.io * @author Scott Frederick */ @@ -102,7 +102,7 @@ public class CreateServiceInstanceBindingRequest extends ServiceBrokerRequest { context = null; parameters = null; } - + public CreateServiceInstanceBindingRequest(String serviceDefinitionId, String planId, BindResource bindResource, Context context, Map parameters) { diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingResponse.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingResponse.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingResponse.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingResponse.java index 45417bf8..d29952a6 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingResponse.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingResponse.java @@ -9,7 +9,7 @@ import lombok.ToString; /** * Details of a response to a service instance binding create request. - * + * * @author Scott Frederick */ @Getter diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRequest.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRequest.java index c4a12191..6be4b30e 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRequest.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRequest.java @@ -13,7 +13,7 @@ import java.util.Map; /** * Details of a request to create a new service instance. - * + * * @author sgreenberg@pivotal.io * @author Scott Frederick */ diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceResponse.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceResponse.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceResponse.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceResponse.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRouteBindingResponse.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRouteBindingResponse.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRouteBindingResponse.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRouteBindingResponse.java index 06974529..4ad43cd2 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRouteBindingResponse.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceRouteBindingResponse.java @@ -9,7 +9,7 @@ import lombok.ToString; /** * Details of a response to a request to create a new service instance binding for a route. - * + * * @author Scott Frederick */ @Getter diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/DashboardClient.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/DashboardClient.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/DashboardClient.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/DashboardClient.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceBindingRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceBindingRequest.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceBindingRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceBindingRequest.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceRequest.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceRequest.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceResponse.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceResponse.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceResponse.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/DeleteServiceInstanceResponse.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/EmptyListSerializer.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/EmptyListSerializer.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/EmptyListSerializer.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/EmptyListSerializer.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/EmptyMapSerializer.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/EmptyMapSerializer.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/EmptyMapSerializer.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/EmptyMapSerializer.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ErrorMessage.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ErrorMessage.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/model/ErrorMessage.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ErrorMessage.java index 0b98750b..5b14edfa 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/ErrorMessage.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ErrorMessage.java @@ -7,7 +7,7 @@ import lombok.ToString; /** * Used to send errors back to the cloud controller. - * + * * @author sgreenberg@pivotal.io */ @Getter diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/GetLastServiceOperationRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/GetLastServiceOperationRequest.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/GetLastServiceOperationRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/GetLastServiceOperationRequest.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/GetLastServiceOperationResponse.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/GetLastServiceOperationResponse.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/GetLastServiceOperationResponse.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/GetLastServiceOperationResponse.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/KubernetesContext.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/KubernetesContext.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/KubernetesContext.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/KubernetesContext.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/MethodSchema.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/MethodSchema.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/MethodSchema.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/MethodSchema.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/OperationState.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/OperationState.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/OperationState.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/OperationState.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/Plan.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Plan.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/Plan.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Plan.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/Schemas.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Schemas.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/Schemas.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/Schemas.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBindingResource.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBindingResource.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/ServiceBindingResource.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBindingResource.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBindingSchema.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBindingSchema.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/ServiceBindingSchema.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBindingSchema.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBrokerRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBrokerRequest.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/ServiceBrokerRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceBrokerRequest.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceDefinition.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceDefinition.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/ServiceDefinition.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceDefinition.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceDefinitionRequires.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceDefinitionRequires.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/ServiceDefinitionRequires.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceDefinitionRequires.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstance.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstance.java similarity index 91% rename from src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstance.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstance.java index 7e693644..2211ee76 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstance.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstance.java @@ -6,7 +6,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize; /** * An instance of a ServiceDefinition. - * + * * @author sgreenberg@pivotal.io * * @deprecated This class is no longer used internally to represent service instances. Implementing brokers should @@ -19,23 +19,23 @@ public class ServiceInstance { @JsonSerialize @JsonProperty("service_instance_id") private String serviceInstanceId; - + @JsonSerialize @JsonProperty("service_id") private String serviceDefinitionId; - + @JsonSerialize @JsonProperty("plan_id") private String planId; - + @JsonSerialize @JsonProperty("organization_guid") private String organizationGuid; - + @JsonSerialize @JsonProperty("space_guid") private String spaceGuid; - + @JsonSerialize @JsonProperty("dashboard_url") private String dashboardUrl; @@ -43,16 +43,16 @@ public class ServiceInstance { @JsonSerialize @JsonProperty("last_operation") private GetLastServiceOperationResponse lastOperation; - + @JsonIgnore private boolean async; - + @SuppressWarnings("unused") private ServiceInstance() {} - + /** - * Create a ServiceInstance from a create request. If fields - * are not present in the request they will remain null in the + * Create a ServiceInstance from a create request. If fields + * are not present in the request they will remain null in the * ServiceInstance. * @param request containing details of ServiceInstance */ @@ -66,10 +66,10 @@ public class ServiceInstance { .withOperationState(OperationState.IN_PROGRESS) .withDescription("Provisioning"); } - + /** - * Create a ServiceInstance from a delete request. If fields - * are not present in the request they will remain null in the + * Create a ServiceInstance from a delete request. If fields + * are not present in the request they will remain null in the * ServiceInstance. * @param request containing details of ServiceInstance */ @@ -81,10 +81,10 @@ public class ServiceInstance { .withOperationState(OperationState.IN_PROGRESS) .withDescription("Deprovisioning"); } - + /** * Create a service instance from an update request. If fields - * are not present in the request they will remain null in the + * are not present in the request they will remain null in the * ServiceInstance. * @param request containing details of ServiceInstance */ @@ -95,7 +95,7 @@ public class ServiceInstance { .withOperationState(OperationState.IN_PROGRESS) .withDescription("Updating"); } - + public String getServiceInstanceId() { return serviceInstanceId; } @@ -146,5 +146,5 @@ public class ServiceInstance { public GetLastServiceOperationResponse getServiceInstanceLastOperation() { return lastOperation; } - + } diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceBinding.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceBinding.java similarity index 94% rename from src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceBinding.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceBinding.java index a5f77725..be1e58b6 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceBinding.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceBinding.java @@ -5,7 +5,7 @@ import java.util.Map; /** * A binding to a service instance - * + * * @author sgreenberg@pivotal.io * * @deprecated This class is no longer used internally to represent service instance bindings. Implementing brokers should @@ -20,8 +20,8 @@ public class ServiceInstanceBinding { private String syslogDrainUrl; private String appGuid; - public ServiceInstanceBinding(String id, - String serviceInstanceId, + public ServiceInstanceBinding(String id, + String serviceInstanceId, Map credentials, String syslogDrainUrl, String appGuid) { this.id = id; @@ -54,9 +54,9 @@ public class ServiceInstanceBinding { public String getSyslogDrainUrl() { return syslogDrainUrl; } - + public String getAppGuid() { return appGuid; } - + } diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceSchema.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceSchema.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceSchema.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/ServiceInstanceSchema.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/SharedVolumeDevice.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/SharedVolumeDevice.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/SharedVolumeDevice.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/SharedVolumeDevice.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/UpdateServiceInstanceRequest.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/UpdateServiceInstanceRequest.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/UpdateServiceInstanceRequest.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/UpdateServiceInstanceRequest.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/UpdateServiceInstanceResponse.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/UpdateServiceInstanceResponse.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/UpdateServiceInstanceResponse.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/UpdateServiceInstanceResponse.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/VolumeDevice.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/VolumeDevice.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/VolumeDevice.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/VolumeDevice.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/VolumeMount.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/VolumeMount.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/model/VolumeMount.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/model/VolumeMount.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/service/BeanCatalogService.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/BeanCatalogService.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/service/BeanCatalogService.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/BeanCatalogService.java index 7f707563..ece34b89 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/service/BeanCatalogService.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/BeanCatalogService.java @@ -9,26 +9,26 @@ import org.springframework.beans.factory.annotation.Autowired; /** * An implementation of the CatalogService that allows the Catalog to be specified as a Spring Bean. - * + * * @author sgreenberg@pivotal.io */ public class BeanCatalogService implements CatalogService { private Catalog catalog; private Map serviceDefs = new HashMap(); - + @Autowired public BeanCatalogService(Catalog catalog) { this.catalog = catalog; initializeMap(); } - + private void initializeMap() { for (ServiceDefinition def: catalog.getServiceDefinitions()) { serviceDefs.put(def.getId(), def); } } - + @Override public Catalog getCatalog() { return catalog; diff --git a/src/main/java/org/springframework/cloud/servicebroker/service/CatalogService.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/CatalogService.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/service/CatalogService.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/CatalogService.java index 4955b3fb..72f82857 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/service/CatalogService.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/CatalogService.java @@ -5,7 +5,7 @@ import org.springframework.cloud.servicebroker.model.ServiceDefinition; /** * This interface is implemented by service brokers to process requests to retrieve the service catalog. - * + * * @author sgreenberg@pivotal.io */ public interface CatalogService { @@ -24,5 +24,5 @@ public interface CatalogService { * @return the service definition, or null if it doesn't exist */ ServiceDefinition getServiceDefinition(String serviceId); - + } diff --git a/src/main/java/org/springframework/cloud/servicebroker/service/NonBindableServiceInstanceBindingService.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/NonBindableServiceInstanceBindingService.java similarity index 100% rename from src/main/java/org/springframework/cloud/servicebroker/service/NonBindableServiceInstanceBindingService.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/NonBindableServiceInstanceBindingService.java diff --git a/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceBindingService.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceBindingService.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceBindingService.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceBindingService.java index f4a223ad..15373487 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceBindingService.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceBindingService.java @@ -10,7 +10,7 @@ import org.springframework.cloud.servicebroker.model.DeleteServiceInstanceBindin /** * This interface is implemented by service brokers to process requests to create and delete service instance bindings. - * + * * @author sgreenberg@pivotal.io * @author Scott Frederick */ diff --git a/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceService.java b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceService.java similarity index 99% rename from src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceService.java rename to spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceService.java index 4af01498..44a0e701 100644 --- a/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceService.java +++ b/spring-cloud-open-service-broker/src/main/java/org/springframework/cloud/servicebroker/service/ServiceInstanceService.java @@ -16,7 +16,7 @@ import org.springframework.cloud.servicebroker.model.UpdateServiceInstanceRespon /** * This interface is implemented by service brokers to process requests related to provisioning, updating, * and deprovisioning service instances. - * + * * @author sgreenberg@pivotal.io * @author Scott Frederick */ diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequestTest.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequestTest.java similarity index 97% rename from src/test/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequestTest.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequestTest.java index 311ff1bb..e4b2ee3c 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequestTest.java +++ b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/AsyncParameterizedServiceInstanceRequestTest.java @@ -3,7 +3,7 @@ package org.springframework.cloud.servicebroker.model; import org.junit.Test; import org.springframework.cloud.servicebroker.model.fixture.DataFixture; -import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.core.IsInstanceOf.instanceOf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.springframework.cloud.servicebroker.model.CloudFoundryContext.CLOUD_FOUNDRY_PLATFORM; diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequestTest.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequestTest.java similarity index 96% rename from src/test/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequestTest.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequestTest.java index 6e9b3523..f3fd7e36 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequestTest.java +++ b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/CreateServiceInstanceBindingRequestTest.java @@ -3,13 +3,14 @@ package org.springframework.cloud.servicebroker.model; import org.junit.Test; import org.springframework.cloud.servicebroker.model.fixture.DataFixture; -import static org.hamcrest.Matchers.instanceOf; +import static org.hamcrest.core.IsInstanceOf.instanceOf; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.springframework.cloud.servicebroker.model.CloudFoundryContext.CLOUD_FOUNDRY_PLATFORM; import static org.springframework.cloud.servicebroker.model.KubernetesContext.KUBERNETES_PLATFORM; +@SuppressWarnings({"deprecation", "DeprecatedIsStillUsed"}) public class CreateServiceInstanceBindingRequestTest { @Test public void requestWithAppGuidBindingIsRead() { diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/PlanTest.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/PlanTest.java similarity index 100% rename from src/test/java/org/springframework/cloud/servicebroker/model/PlanTest.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/PlanTest.java diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/CatalogFixture.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/CatalogFixture.java similarity index 100% rename from src/test/java/org/springframework/cloud/servicebroker/model/fixture/CatalogFixture.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/CatalogFixture.java diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ContextFixture.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ContextFixture.java similarity index 100% rename from src/test/java/org/springframework/cloud/servicebroker/model/fixture/ContextFixture.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ContextFixture.java diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/DataFixture.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/DataFixture.java similarity index 100% rename from src/test/java/org/springframework/cloud/servicebroker/model/fixture/DataFixture.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/DataFixture.java diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ParametersFixture.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ParametersFixture.java similarity index 100% rename from src/test/java/org/springframework/cloud/servicebroker/model/fixture/ParametersFixture.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ParametersFixture.java diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/PlanFixture.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/PlanFixture.java similarity index 100% rename from src/test/java/org/springframework/cloud/servicebroker/model/fixture/PlanFixture.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/PlanFixture.java diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceFixture.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceFixture.java similarity index 91% rename from src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceFixture.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceFixture.java index 8957e730..5b89dfcc 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceFixture.java +++ b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceFixture.java @@ -9,9 +9,9 @@ public class ServiceFixture { public static ServiceDefinition getSimpleService() { return new ServiceDefinition( - "service-one-id", - "Service One", - "Description for Service One", + "service-one-id", + "Service One", + "Description for Service One", true, PlanFixture.getAllPlans()); } diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceInstanceBindingFixture.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceInstanceBindingFixture.java similarity index 100% rename from src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceInstanceBindingFixture.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceInstanceBindingFixture.java diff --git a/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceInstanceFixture.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceInstanceFixture.java similarity index 100% rename from src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceInstanceFixture.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/model/fixture/ServiceInstanceFixture.java diff --git a/src/test/java/org/springframework/cloud/servicebroker/service/impl/BeanCatalogServiceTest.java b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/service/BeanCatalogServiceTest.java similarity index 81% rename from src/test/java/org/springframework/cloud/servicebroker/service/impl/BeanCatalogServiceTest.java rename to spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/service/BeanCatalogServiceTest.java index 9d1cc50d..6ad5ee5b 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/service/impl/BeanCatalogServiceTest.java +++ b/spring-cloud-open-service-broker/src/test/java/org/springframework/cloud/servicebroker/service/BeanCatalogServiceTest.java @@ -1,4 +1,4 @@ -package org.springframework.cloud.servicebroker.service.impl; +package org.springframework.cloud.servicebroker.service; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; @@ -8,18 +8,17 @@ import java.util.List; import org.springframework.cloud.servicebroker.model.Catalog; import org.springframework.cloud.servicebroker.model.ServiceDefinition; -import org.springframework.cloud.servicebroker.service.BeanCatalogService; import org.junit.Before; import org.junit.Test; public class BeanCatalogServiceTest { private BeanCatalogService service; - + private Catalog catalog; private ServiceDefinition serviceDefinition; private static final String SVC_DEF_ID = "svc-def-id"; - + @Before public void setup() { serviceDefinition = new ServiceDefinition(SVC_DEF_ID, "Name", "Description", true, null); @@ -27,20 +26,20 @@ public class BeanCatalogServiceTest { catalog = new Catalog(defs); service = new BeanCatalogService(catalog); } - + @Test public void catalogIsReturnedSuccessfully() { assertEquals(catalog, service.getCatalog()); } - - @Test - public void itFindsServiceDefinition() { + + @Test + public void serviceDefinitionIsFound() { assertEquals(serviceDefinition, service.getServiceDefinition(SVC_DEF_ID)); } - + @Test - public void itDoesNotFindServiceDefinition() { + public void serviceDefinitionIsNotFound() { assertNull(service.getServiceDefinition("NOT_THERE")); } - + } diff --git a/src/test/resources/bindRequestWithAppGuid.json b/spring-cloud-open-service-broker/src/test/resources/bindRequestWithAppGuid.json similarity index 100% rename from src/test/resources/bindRequestWithAppGuid.json rename to spring-cloud-open-service-broker/src/test/resources/bindRequestWithAppGuid.json diff --git a/src/test/resources/bindRequestWithRoute.json b/spring-cloud-open-service-broker/src/test/resources/bindRequestWithRoute.json similarity index 100% rename from src/test/resources/bindRequestWithRoute.json rename to spring-cloud-open-service-broker/src/test/resources/bindRequestWithRoute.json diff --git a/src/test/resources/createRequestWithCloudFoundryContext.json b/spring-cloud-open-service-broker/src/test/resources/createRequestWithCloudFoundryContext.json similarity index 100% rename from src/test/resources/createRequestWithCloudFoundryContext.json rename to spring-cloud-open-service-broker/src/test/resources/createRequestWithCloudFoundryContext.json diff --git a/src/test/resources/createRequestWithCustomContext.json b/spring-cloud-open-service-broker/src/test/resources/createRequestWithCustomContext.json similarity index 100% rename from src/test/resources/createRequestWithCustomContext.json rename to spring-cloud-open-service-broker/src/test/resources/createRequestWithCustomContext.json diff --git a/src/test/resources/createRequestWithKubernetesContext.json b/spring-cloud-open-service-broker/src/test/resources/createRequestWithKubernetesContext.json similarity index 100% rename from src/test/resources/createRequestWithKubernetesContext.json rename to spring-cloud-open-service-broker/src/test/resources/createRequestWithKubernetesContext.json diff --git a/spring-cloud-starter-service-broker-webmvc/build.gradle b/spring-cloud-starter-service-broker-webmvc/build.gradle new file mode 100644 index 00000000..9adf8847 --- /dev/null +++ b/spring-cloud-starter-service-broker-webmvc/build.gradle @@ -0,0 +1,31 @@ +description = "Spring Cloud Service Broker Starter" + +buildscript { + ext { + springBootVersion = "1.5.8.RELEASE" + } + + repositories { + mavenCentral() + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") + } +} + +apply plugin: 'org.springframework.boot' + +bootRepackage { + enabled = false +} + +dependencies { + compile project(":spring-cloud-open-service-broker") + compile("org.springframework.boot:spring-boot-starter-web") + compile("org.springframework.boot:spring-boot-starter-security") + + testCompile project(path: ":spring-cloud-open-service-broker", configuration: 'testOutput') + testCompile("org.springframework.boot:spring-boot-starter-test") + testCompile("org.mockito:mockito-core:${mockitoVersion}") + testCompile("org.hamcrest:hamcrest-library:${hamcrestVersion}") +} diff --git a/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ApiVersionAutoConfiguration.java b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ApiVersionAutoConfiguration.java new file mode 100644 index 00000000..65edff01 --- /dev/null +++ b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ApiVersionAutoConfiguration.java @@ -0,0 +1,62 @@ +/* + * Copyright 2002-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.servicebroker.webmvc.autoconfig; + +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; +import org.springframework.cloud.servicebroker.model.Catalog; +import org.springframework.cloud.servicebroker.service.ServiceInstanceService; +import org.springframework.cloud.servicebroker.webmvc.interceptor.ApiVersionInterceptor; +import org.springframework.cloud.servicebroker.model.BrokerApiVersion; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * {@link EnableAutoConfiguration Auto-configuration} for the service broker API validation. + * Configures support for any service broker API version if a version is not specifically + * configured. + * + * @author Benjamin Ihrig + * @author Scott Frederick + */ +@Configuration +@ConditionalOnWebApplication +@ConditionalOnBean({ Catalog.class, ServiceInstanceService.class }) +@AutoConfigureAfter(WebMvcAutoConfiguration.class) +public class ApiVersionAutoConfiguration { + @Bean + @ConditionalOnMissingBean(BrokerApiVersion.class) + public BrokerApiVersion serviceBrokerApiVersion() { + return new BrokerApiVersion(); + } + + @Bean + public ApiVersionInterceptor serviceBrokerApiVersionInterceptor(BrokerApiVersion brokerApiVersion) { + return new ApiVersionInterceptor(brokerApiVersion); + } + + @Bean + public ApiVersionWebMvcConfigurerAdapter serviceBrokerWebMvcConfigurerAdapter( + ApiVersionInterceptor apiVersionInterceptor) { + return new ApiVersionWebMvcConfigurerAdapter( + apiVersionInterceptor); + } +} \ No newline at end of file diff --git a/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ApiVersionWebMvcConfigurerAdapter.java b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ApiVersionWebMvcConfigurerAdapter.java new file mode 100644 index 00000000..426421af --- /dev/null +++ b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ApiVersionWebMvcConfigurerAdapter.java @@ -0,0 +1,43 @@ +/* + * Copyright 2002-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.servicebroker.webmvc.autoconfig; + +import org.springframework.cloud.servicebroker.webmvc.interceptor.ApiVersionInterceptor; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +/** + * {@link WebMvcConfigurerAdapter} that configures checking for an appropriate service broker API version. + * + * @author Scott Frederick + * @author Benjamin Ihrig + */ +public class ApiVersionWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter { + private static final String V2_API_PATH_PATTERN = "/v2/**"; + + private final ApiVersionInterceptor apiVersionInterceptor; + + ApiVersionWebMvcConfigurerAdapter(ApiVersionInterceptor apiVersionInterceptor) { + this.apiVersionInterceptor = apiVersionInterceptor; + } + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(apiVersionInterceptor).addPathPatterns(V2_API_PATH_PATTERN); + } +} \ No newline at end of file diff --git a/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ServiceBrokerAutoConfiguration.java b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ServiceBrokerAutoConfiguration.java new file mode 100644 index 00000000..9daf0d60 --- /dev/null +++ b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ServiceBrokerAutoConfiguration.java @@ -0,0 +1,60 @@ +/* + * Copyright 2002-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.servicebroker.webmvc.autoconfig; + +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.cloud.servicebroker.model.Catalog; +import org.springframework.cloud.servicebroker.service.BeanCatalogService; +import org.springframework.cloud.servicebroker.service.CatalogService; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; +import org.springframework.cloud.servicebroker.service.NonBindableServiceInstanceBindingService; +import org.springframework.cloud.servicebroker.service.ServiceInstanceBindingService; +import org.springframework.cloud.servicebroker.service.ServiceInstanceService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * {@link EnableAutoConfiguration Auto-configuration} for the service broker implementation beans. + * + * Provides a default {@link CatalogService} bean if a {@link Catalog} bean is provided. + * + * Provides a {@link NonBindableServiceInstanceBindingService} if a {@link ServiceInstanceBindingService} + * is not provided, indicating that the service broker provides no bindable services. + * + * @author Scott Frederick + */ +@Configuration +@ConditionalOnWebApplication +@ConditionalOnBean({ Catalog.class, ServiceInstanceService.class }) +@AutoConfigureAfter(WebMvcAutoConfiguration.class) +public class ServiceBrokerAutoConfiguration { + @Bean + @ConditionalOnMissingBean(CatalogService.class) + public CatalogService beanCatalogService(Catalog catalog) { + return new BeanCatalogService(catalog); + } + + @Bean + @ConditionalOnMissingBean(ServiceInstanceBindingService.class) + public ServiceInstanceBindingService nonBindableServiceInstanceBindingService() { + return new NonBindableServiceInstanceBindingService(); + } +} \ No newline at end of file diff --git a/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ServiceBrokerWebMvcAutoConfiguration.java b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ServiceBrokerWebMvcAutoConfiguration.java new file mode 100644 index 00000000..357f5fed --- /dev/null +++ b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/autoconfig/ServiceBrokerWebMvcAutoConfiguration.java @@ -0,0 +1,62 @@ +/* + * Copyright 2002-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.servicebroker.webmvc.autoconfig; + +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.cloud.servicebroker.controller.CatalogController; +import org.springframework.cloud.servicebroker.controller.ServiceInstanceBindingController; +import org.springframework.cloud.servicebroker.controller.ServiceInstanceController; +import org.springframework.cloud.servicebroker.model.Catalog; +import org.springframework.cloud.servicebroker.service.CatalogService; +import org.springframework.cloud.servicebroker.service.ServiceInstanceBindingService; +import org.springframework.cloud.servicebroker.service.ServiceInstanceService; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * {@link EnableAutoConfiguration Auto-configuration} for the service broker REST API endpoints. + * + * @author Benjamin Ihrig + */ +@Configuration +@ConditionalOnWebApplication +@ConditionalOnBean({ Catalog.class, ServiceInstanceService.class }) +@AutoConfigureAfter(ServiceBrokerAutoConfiguration.class) +public class ServiceBrokerWebMvcAutoConfiguration { + + @Bean + public CatalogController catalogController(CatalogService catalogService) { + return new CatalogController(catalogService); + } + + @Bean + public ServiceInstanceController serviceInstanceController( + CatalogService catalogService, + ServiceInstanceService serviceInstanceService) { + return new ServiceInstanceController(catalogService, serviceInstanceService); + } + + @Bean + public ServiceInstanceBindingController serviceInstanceBindingController( + CatalogService catalogService, + ServiceInstanceBindingService serviceInstanceBindingService) { + return new ServiceInstanceBindingController(catalogService, serviceInstanceBindingService); + } +} diff --git a/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptor.java b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptor.java new file mode 100644 index 00000000..1511dab8 --- /dev/null +++ b/spring-cloud-starter-service-broker-webmvc/src/main/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptor.java @@ -0,0 +1,79 @@ +/* + * Copyright 2002-2017 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.servicebroker.webmvc.interceptor; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.cloud.servicebroker.exception.ServiceBrokerApiVersionException; +import org.springframework.cloud.servicebroker.model.BrokerApiVersion; +import org.springframework.web.servlet.HandlerInterceptor; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +/** + * {@link HandlerInterceptor} that inspects the service broker API version passed in all request headers + * and compares it to the API version supported by the broker. + * + * @author Scott Frederick + */ +public class ApiVersionInterceptor extends HandlerInterceptorAdapter { + + private final BrokerApiVersion version; + + /** + * Construct an interceptor that disables API version validation. + */ + public ApiVersionInterceptor() { + this(null); + } + + /** + * Construct an interceptor that validates the API version passed in request headers to the + * configured version. + * + * @param version the API version supported by the broker. + */ + public ApiVersionInterceptor(BrokerApiVersion version) { + this.version = version; + } + + /** + * Compares the service broker API version header to the supported version. + * + * @param request {@inheritDoc} + * @param response {@inheritDoc} + * @param handler {@inheritDoc} + * @throws ServiceBrokerApiVersionException if the API version header value does not match the version + * supported by the broker + */ + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) + throws ServiceBrokerApiVersionException { + if (version != null && !anyVersionAllowed()) { + String apiVersion = request.getHeader(version.getBrokerApiVersionHeader()); + if (!version.getApiVersion().equals(apiVersion)) { + throw new ServiceBrokerApiVersionException(version.getApiVersion(), apiVersion); + } + } + return true; + } + + private boolean anyVersionAllowed() { + return BrokerApiVersion.API_VERSION_ANY.equals(version.getApiVersion()); + } + +} diff --git a/spring-cloud-starter-service-broker-webmvc/src/main/resources/META-INF/spring.factories b/spring-cloud-starter-service-broker-webmvc/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..bd505b25 --- /dev/null +++ b/spring-cloud-starter-service-broker-webmvc/src/main/resources/META-INF/spring.factories @@ -0,0 +1,4 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +org.springframework.cloud.servicebroker.webvmc.autoconfig.ServiceBrokerAutoConfiguration,\ +org.springframework.cloud.servicebroker.webvmc.autoconfig.ServiceBrokerWebMvcAutoConfiguration,\ +org.springframework.cloud.servicebroker.webvmc.autoconfig.ApiVersionAutoConfiguration diff --git a/src/test/java/org/springframework/cloud/servicebroker/controller/CatalogControllerIntegrationTest.java b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/CatalogControllerIntegrationTest.java similarity index 92% rename from src/test/java/org/springframework/cloud/servicebroker/controller/CatalogControllerIntegrationTest.java rename to spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/CatalogControllerIntegrationTest.java index c50c59f5..5d33e699 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/controller/CatalogControllerIntegrationTest.java +++ b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/CatalogControllerIntegrationTest.java @@ -1,33 +1,37 @@ -package org.springframework.cloud.servicebroker.controller; +package org.springframework.cloud.servicebroker.webmvc.integration; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import org.springframework.cloud.servicebroker.controller.CatalogController; import org.springframework.cloud.servicebroker.model.Catalog; import org.springframework.cloud.servicebroker.model.Plan; import org.springframework.cloud.servicebroker.model.ServiceDefinition; import org.springframework.cloud.servicebroker.model.fixture.PlanFixture; import org.springframework.cloud.servicebroker.model.fixture.ServiceFixture; import org.springframework.cloud.servicebroker.service.CatalogService; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import static org.hamcrest.Matchers.*; -import static org.hamcrest.core.IsNot.not; +import static org.hamcrest.collection.IsCollectionWithSize.hasSize; +import static org.hamcrest.collection.IsEmptyCollection.empty; +import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder; +import static org.hamcrest.collection.IsIterableContainingInOrder.contains; +import static org.mockito.Mockito.when; import static org.springframework.cloud.servicebroker.model.ServiceDefinitionRequires.SERVICE_REQUIRES_ROUTE_FORWARDING; import static org.springframework.cloud.servicebroker.model.ServiceDefinitionRequires.SERVICE_REQUIRES_SYSLOG_DRAIN; import static org.springframework.cloud.servicebroker.model.fixture.CatalogFixture.getCatalog; import static org.springframework.cloud.servicebroker.model.fixture.CatalogFixture.getCatalogWithRequires; -import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; @@ -67,7 +71,7 @@ public class CatalogControllerIntegrationTest { .andDo(print()) .andExpect(status().isOk()) .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(jsonPath("$.services.", hasSize(1))) + .andExpect(jsonPath("$.services", hasSize(1))) .andExpect(jsonPath("$.services[*].id", contains(service.getId()))) .andExpect(jsonPath("$.services[*].name", contains(service.getName()))) .andExpect(jsonPath("$.services[*].description", contains(service.getDescription()))) @@ -98,7 +102,7 @@ public class CatalogControllerIntegrationTest { .andDo(print()) .andExpect(status().isOk()) .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(jsonPath("$.services.", hasSize(1))) + .andExpect(jsonPath("$.services", hasSize(1))) .andExpect(jsonPath("$.services[*].id", contains(service.getId()))) .andExpect(jsonPath("$.services[*].name", contains(service.getName()))) .andExpect(jsonPath("$.services[*].description", contains(service.getDescription()))) @@ -133,7 +137,7 @@ public class CatalogControllerIntegrationTest { .andDo(print()) .andExpect(status().isOk()) .andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)) - .andExpect(jsonPath("$.services.", hasSize(1))) + .andExpect(jsonPath("$.services", hasSize(1))) .andExpect(jsonPath("$.services[*].id", contains(service.getId()))) .andExpect(jsonPath("$.services[*].name", contains(service.getName()))) .andExpect(jsonPath("$.services[*].description", contains(service.getDescription()))) diff --git a/src/test/java/org/springframework/cloud/servicebroker/controller/ControllerIntegrationTest.java b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ControllerIntegrationTest.java similarity index 94% rename from src/test/java/org/springframework/cloud/servicebroker/controller/ControllerIntegrationTest.java rename to spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ControllerIntegrationTest.java index a92d9fae..d5fbbb91 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/controller/ControllerIntegrationTest.java +++ b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ControllerIntegrationTest.java @@ -1,17 +1,18 @@ -package org.springframework.cloud.servicebroker.controller; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.cloud.servicebroker.model.fixture.ServiceFixture; -import org.springframework.cloud.servicebroker.service.CatalogService; -import org.mockito.Mock; -import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; -import org.springframework.security.crypto.codec.Base64; +package org.springframework.cloud.servicebroker.webmvc.integration; import java.util.HashMap; import java.util.Map; -import static org.mockito.Matchers.eq; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.mockito.Mock; + +import org.springframework.cloud.servicebroker.model.fixture.ServiceFixture; +import org.springframework.cloud.servicebroker.service.CatalogService; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; +import org.springframework.security.crypto.codec.Base64; + +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; public abstract class ControllerIntegrationTest { diff --git a/src/test/java/org/springframework/cloud/servicebroker/controller/NonBindableServiceInstanceBindingControllerIntegrationTest.java b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/NonBindableServiceInstanceBindingControllerIntegrationTest.java similarity index 91% rename from src/test/java/org/springframework/cloud/servicebroker/controller/NonBindableServiceInstanceBindingControllerIntegrationTest.java rename to spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/NonBindableServiceInstanceBindingControllerIntegrationTest.java index d3be4a9b..9715223a 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/controller/NonBindableServiceInstanceBindingControllerIntegrationTest.java +++ b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/NonBindableServiceInstanceBindingControllerIntegrationTest.java @@ -1,9 +1,11 @@ -package org.springframework.cloud.servicebroker.controller; +package org.springframework.cloud.servicebroker.webmvc.integration; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; + +import org.mockito.junit.MockitoJUnitRunner; +import org.springframework.cloud.servicebroker.controller.ServiceInstanceBindingController; import org.springframework.cloud.servicebroker.model.fixture.DataFixture; import org.springframework.cloud.servicebroker.service.NonBindableServiceInstanceBindingService; import org.springframework.cloud.servicebroker.service.ServiceInstanceBindingService; diff --git a/src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingControllerIntegrationTest.java b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceBindingControllerIntegrationTest.java similarity index 91% rename from src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingControllerIntegrationTest.java rename to spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceBindingControllerIntegrationTest.java index 17c6d22b..a50a56b4 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingControllerIntegrationTest.java +++ b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceBindingControllerIntegrationTest.java @@ -1,36 +1,36 @@ -package org.springframework.cloud.servicebroker.controller; +package org.springframework.cloud.servicebroker.webmvc.integration; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import org.springframework.cloud.servicebroker.controller.ServiceInstanceBindingController; import org.springframework.cloud.servicebroker.exception.ServiceInstanceBindingDoesNotExistException; import org.springframework.cloud.servicebroker.exception.ServiceInstanceBindingExistsException; import org.springframework.cloud.servicebroker.exception.ServiceInstanceDoesNotExistException; -import org.springframework.cloud.servicebroker.model.CreateServiceInstanceBindingRequest; import org.springframework.cloud.servicebroker.model.CreateServiceInstanceAppBindingResponse; +import org.springframework.cloud.servicebroker.model.CreateServiceInstanceBindingRequest; import org.springframework.cloud.servicebroker.model.CreateServiceInstanceRouteBindingResponse; import org.springframework.cloud.servicebroker.model.DeleteServiceInstanceBindingRequest; import org.springframework.cloud.servicebroker.model.SharedVolumeDevice; import org.springframework.cloud.servicebroker.model.VolumeMount; -import org.springframework.cloud.servicebroker.service.ServiceInstanceBindingService; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.runners.MockitoJUnitRunner; import org.springframework.cloud.servicebroker.model.fixture.DataFixture; import org.springframework.cloud.servicebroker.model.fixture.ServiceInstanceBindingFixture; +import org.springframework.cloud.servicebroker.service.ServiceInstanceBindingService; import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; -import static org.hamcrest.Matchers.containsString; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.StringContains.containsString; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; -import static org.mockito.Matchers.eq; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -45,10 +45,10 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInstanceBindingIntegrationTest { private MockMvc mockMvc; - + @InjectMocks private ServiceInstanceBindingController controller; - + @Mock private ServiceInstanceBindingService serviceInstanceBindingService; @@ -77,8 +77,8 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst .andExpect(jsonPath("$.credentials.uri", is(createResponse.getCredentials().get("uri")))) .andExpect(jsonPath("$.credentials.username", is(createResponse.getCredentials().get("username")))) .andExpect(jsonPath("$.credentials.password", is(createResponse.getCredentials().get("password")))) - .andExpect(jsonPath("$.syslog_drain_url", nullValue())) - .andExpect(jsonPath("$.route_service_url", nullValue())); + .andExpect(jsonPath("$.syslog_drain_url").doesNotExist()) + .andExpect(jsonPath("$.route_service_url").doesNotExist()); CreateServiceInstanceBindingRequest actualRequest = verifyCreateBinding(); assertNull(actualRequest.getCfInstanceId()); @@ -106,8 +106,8 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst .andExpect(jsonPath("$.credentials.uri", is(createResponse.getCredentials().get("uri")))) .andExpect(jsonPath("$.credentials.username", is(createResponse.getCredentials().get("username")))) .andExpect(jsonPath("$.credentials.password", is(createResponse.getCredentials().get("password")))) - .andExpect(jsonPath("$.syslog_drain_url", nullValue())) - .andExpect(jsonPath("$.route_service_url", nullValue())); + .andExpect(jsonPath("$.syslog_drain_url").doesNotExist()) + .andExpect(jsonPath("$.route_service_url").doesNotExist()); CreateServiceInstanceBindingRequest actualRequest = verifyCreateBinding(); assertEquals(CF_INSTANCE_ID, actualRequest.getCfInstanceId()); @@ -135,9 +135,9 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst .andExpect(jsonPath("$.credentials.uri", is(createResponse.getCredentials().get("uri")))) .andExpect(jsonPath("$.credentials.username", is(createResponse.getCredentials().get("username")))) .andExpect(jsonPath("$.credentials.password", is(createResponse.getCredentials().get("password")))) - .andExpect(jsonPath("$.syslog_drain_url", nullValue())) - .andExpect(jsonPath("$.volume_mounts", nullValue())) - .andExpect(jsonPath("$.route_service_url", nullValue())); + .andExpect(jsonPath("$.syslog_drain_url").doesNotExist()) + .andExpect(jsonPath("$.volume_mounts").doesNotExist()) + .andExpect(jsonPath("$.route_service_url").doesNotExist()); } @Test @@ -155,9 +155,9 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isCreated()) - .andExpect(jsonPath("$.credentials", nullValue())) - .andExpect(jsonPath("$.syslog_drain_url", nullValue())) - .andExpect(jsonPath("$.volume_mounts", nullValue())) + .andExpect(jsonPath("$.credentials").doesNotExist()) + .andExpect(jsonPath("$.syslog_drain_url").doesNotExist()) + .andExpect(jsonPath("$.volume_mounts").doesNotExist()) .andExpect(jsonPath("$.route_service_url", is(response.getRouteServiceUrl()))); } @@ -178,9 +178,9 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) - .andExpect(jsonPath("$.credentials", nullValue())) - .andExpect(jsonPath("$.syslog_drain_url", nullValue())) - .andExpect(jsonPath("$.volume_mounts", nullValue())) + .andExpect(jsonPath("$.credentials").doesNotExist()) + .andExpect(jsonPath("$.syslog_drain_url").doesNotExist()) + .andExpect(jsonPath("$.volume_mounts").doesNotExist()) .andExpect(jsonPath("$.route_service_url", is(response.getRouteServiceUrl()))); } @@ -202,8 +202,8 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst .andExpect(jsonPath("$.credentials.username", is(response.getCredentials().get("username")))) .andExpect(jsonPath("$.credentials.password", is(response.getCredentials().get("password")))) .andExpect(jsonPath("$.syslog_drain_url", is(response.getSyslogDrainUrl()))) - .andExpect(jsonPath("$.volume_mounts", nullValue())) - .andExpect(jsonPath("$.route_service_url", nullValue())); + .andExpect(jsonPath("$.volume_mounts").doesNotExist()) + .andExpect(jsonPath("$.route_service_url").doesNotExist()); } @Test @@ -223,8 +223,8 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isCreated()) - .andExpect(jsonPath("$.credentials", nullValue())) - .andExpect(jsonPath("$.syslog_drain_url", nullValue())) + .andExpect(jsonPath("$.credentials").doesNotExist()) + .andExpect(jsonPath("$.syslog_drain_url").doesNotExist()) .andExpect(jsonPath("$.volume_mounts[0].driver", is(volumeMount.getDriver()))) .andExpect(jsonPath("$.volume_mounts[0].container_dir", is(volumeMount.getContainerDir()))) .andExpect(jsonPath("$.volume_mounts[0].mode", is(volumeMount.getMode().toString()))) @@ -363,7 +363,7 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst @Test public void deleteBindingWithUnknownBindingIdFails() throws Exception { - Mockito.doThrow(new ServiceInstanceBindingDoesNotExistException(deleteRequest.getBindingId())) + doThrow(new ServiceInstanceBindingDoesNotExistException(deleteRequest.getBindingId())) .when(serviceInstanceBindingService).deleteServiceInstanceBinding(eq(deleteRequest)); setupCatalogService(deleteRequest.getServiceDefinitionId()); @@ -388,13 +388,13 @@ public class ServiceInstanceBindingControllerIntegrationTest extends ServiceInst private CreateServiceInstanceBindingRequest verifyCreateBinding() { ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(CreateServiceInstanceBindingRequest.class); - Mockito.verify(serviceInstanceBindingService).createServiceInstanceBinding(argumentCaptor.capture()); + verify(serviceInstanceBindingService).createServiceInstanceBinding(argumentCaptor.capture()); return argumentCaptor.getValue(); } private DeleteServiceInstanceBindingRequest verifyDeleteBinding() { ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(DeleteServiceInstanceBindingRequest.class); - Mockito.verify(serviceInstanceBindingService).deleteServiceInstanceBinding(argumentCaptor.capture()); + verify(serviceInstanceBindingService).deleteServiceInstanceBinding(argumentCaptor.capture()); return argumentCaptor.getValue(); } } diff --git a/src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingIntegrationTest.java b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceBindingIntegrationTest.java similarity index 96% rename from src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingIntegrationTest.java rename to spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceBindingIntegrationTest.java index b059321b..d8fc1679 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingIntegrationTest.java +++ b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceBindingIntegrationTest.java @@ -1,6 +1,7 @@ -package org.springframework.cloud.servicebroker.controller; +package org.springframework.cloud.servicebroker.webmvc.integration; import org.junit.Before; + import org.springframework.cloud.servicebroker.model.CreateServiceInstanceBindingRequest; import org.springframework.cloud.servicebroker.model.DeleteServiceInstanceBindingRequest; import org.springframework.cloud.servicebroker.model.fixture.ServiceInstanceBindingFixture; diff --git a/src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceControllerIntegrationTest.java b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceControllerIntegrationTest.java similarity index 96% rename from src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceControllerIntegrationTest.java rename to spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceControllerIntegrationTest.java index 8b7fb8bd..69478de7 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/controller/ServiceInstanceControllerIntegrationTest.java +++ b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/integration/ServiceInstanceControllerIntegrationTest.java @@ -1,22 +1,15 @@ -package org.springframework.cloud.servicebroker.controller; +package org.springframework.cloud.servicebroker.webmvc.integration; -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.when; -import static org.springframework.cloud.servicebroker.model.ServiceBrokerRequest.API_INFO_LOCATION_HEADER; -import static org.springframework.cloud.servicebroker.model.ServiceBrokerRequest.ORIGINATING_IDENTITY_HEADER; -import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; - -import org.junit.*; +import org.junit.Before; +import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.*; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.ArgumentCaptor; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import org.springframework.cloud.servicebroker.controller.ServiceInstanceController; import org.springframework.cloud.servicebroker.exception.ServiceBrokerAsyncRequiredException; import org.springframework.cloud.servicebroker.exception.ServiceBrokerInvalidParametersException; import org.springframework.cloud.servicebroker.exception.ServiceInstanceDoesNotExistException; @@ -41,6 +34,24 @@ import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.util.UriComponentsBuilder; +import static org.hamcrest.core.Is.is; +import static org.hamcrest.core.StringContains.containsString; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.when; +import static org.springframework.cloud.servicebroker.model.ServiceBrokerRequest.API_INFO_LOCATION_HEADER; +import static org.springframework.cloud.servicebroker.model.ServiceBrokerRequest.ORIGINATING_IDENTITY_HEADER; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + @RunWith(MockitoJUnitRunner.class) public class ServiceInstanceControllerIntegrationTest extends ControllerIntegrationTest { @@ -226,7 +237,7 @@ public class ServiceInstanceControllerIntegrationTest extends ControllerIntegrat .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isUnprocessableEntity()) - .andExpect(jsonPath("$.error", org.hamcrest.Matchers.is(AsyncRequiredErrorMessage.ASYNC_REQUIRED_ERROR))) + .andExpect(jsonPath("$.error", is(AsyncRequiredErrorMessage.ASYNC_REQUIRED_ERROR))) .andExpect(jsonPath("$.description", is("async required description"))); } @@ -248,9 +259,6 @@ public class ServiceInstanceControllerIntegrationTest extends ControllerIntegrat @Test public void createServiceInstanceWithInvalidFieldsFails() throws Exception { - when(serviceInstanceService.createServiceInstance(eq(syncCreateRequest))) - .thenReturn(syncCreateResponse); - setupCatalogService(syncCreateRequest.getServiceDefinitionId()); String body = DataFixture.toJson(syncCreateRequest); @@ -267,9 +275,6 @@ public class ServiceInstanceControllerIntegrationTest extends ControllerIntegrat @Test public void createServiceInstanceWithMissingFieldsFails() throws Exception { - when(serviceInstanceService.createServiceInstance(any(CreateServiceInstanceRequest.class))) - .thenReturn(syncCreateResponse); - String body = "{}"; mockMvc.perform(put(buildUrl(syncCreateRequest, false)) @@ -286,9 +291,6 @@ public class ServiceInstanceControllerIntegrationTest extends ControllerIntegrat @Test public void createServiceInstanceWithMissingIdentityPropertiesFails() throws Exception { - when(serviceInstanceService.createServiceInstance(eq(syncCreateRequest))) - .thenReturn(syncCreateResponse); - setupCatalogService(syncCreateRequest.getServiceDefinitionId()); mockMvc.perform(put(buildUrl(syncCreateRequest, false)) @@ -304,9 +306,6 @@ public class ServiceInstanceControllerIntegrationTest extends ControllerIntegrat @Test public void createServiceInstanceWithMalformedIdentityPropertiesFails() throws Exception { - when(serviceInstanceService.createServiceInstance(eq(syncCreateRequest))) - .thenReturn(syncCreateResponse); - setupCatalogService(syncCreateRequest.getServiceDefinitionId()); mockMvc.perform(put(buildUrl(syncCreateRequest, false)) @@ -416,7 +415,7 @@ public class ServiceInstanceControllerIntegrationTest extends ControllerIntegrat .header(API_INFO_LOCATION_HEADER, API_INFO_LOCATION) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isUnprocessableEntity()) - .andExpect(jsonPath("$.error", org.hamcrest.Matchers.is(AsyncRequiredErrorMessage.ASYNC_REQUIRED_ERROR))) + .andExpect(jsonPath("$.error", is(AsyncRequiredErrorMessage.ASYNC_REQUIRED_ERROR))) .andExpect(jsonPath("$.description", is("async required description"))); } @@ -497,7 +496,7 @@ public class ServiceInstanceControllerIntegrationTest extends ControllerIntegrat .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isUnprocessableEntity()) - .andExpect(jsonPath("$.error", org.hamcrest.Matchers.is(AsyncRequiredErrorMessage.ASYNC_REQUIRED_ERROR))) + .andExpect(jsonPath("$.error", is(AsyncRequiredErrorMessage.ASYNC_REQUIRED_ERROR))) .andExpect(jsonPath("$.description", is("async required description"))); } diff --git a/src/test/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptorIntegrationTest.java b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptorIntegrationTest.java similarity index 73% rename from src/test/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptorIntegrationTest.java rename to spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptorIntegrationTest.java index cf201f81..2c6b8c38 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptorIntegrationTest.java +++ b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptorIntegrationTest.java @@ -1,11 +1,11 @@ -package org.springframework.cloud.servicebroker.interceptor; +package org.springframework.cloud.servicebroker.webmvc.interceptor; import static org.hamcrest.Matchers.containsString; -import static org.springframework.cloud.servicebroker.model.BrokerApiVersion.DEFAULT_API_VERSION_HEADER; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import org.mockito.junit.MockitoJUnitRunner; import org.springframework.cloud.servicebroker.controller.CatalogController; import org.springframework.cloud.servicebroker.model.BrokerApiVersion; import org.springframework.cloud.servicebroker.service.CatalogService; @@ -13,14 +13,13 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; @RunWith(MockitoJUnitRunner.class) -public class BrokerApiVersionInterceptorIntegrationTest { +public class ApiVersionInterceptorIntegrationTest { private final static String CATALOG_PATH = "/v2/catalog"; @@ -35,23 +34,23 @@ public class BrokerApiVersionInterceptorIntegrationTest { mockWithExpectedVersion().perform(get(CATALOG_PATH) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isPreconditionFailed()) - .andExpect(jsonPath("$.description.", containsString("expected-version"))); + .andExpect(jsonPath("$.description", containsString("expected-version"))); } @Test public void incorrectHeaderSent() throws Exception { mockWithExpectedVersion().perform(get(CATALOG_PATH) - .header(DEFAULT_API_VERSION_HEADER, "wrong-version") + .header(BrokerApiVersion.DEFAULT_API_VERSION_HEADER, "wrong-version") .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isPreconditionFailed()) - .andExpect(jsonPath("$.description.", containsString("expected-version"))) - .andExpect(jsonPath("$.description.", containsString("wrong-version"))); + .andExpect(jsonPath("$.description", containsString("expected-version"))) + .andExpect(jsonPath("$.description", containsString("wrong-version"))); } @Test public void matchingHeaderSent() throws Exception { mockWithExpectedVersion().perform(get(CATALOG_PATH) - .header(DEFAULT_API_VERSION_HEADER, "expected-version") + .header(BrokerApiVersion.DEFAULT_API_VERSION_HEADER, "expected-version") .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); } @@ -66,20 +65,20 @@ public class BrokerApiVersionInterceptorIntegrationTest { @Test public void anyHeaderSent() throws Exception { mockWithDefaultVersion().perform(get(CATALOG_PATH) - .header(DEFAULT_API_VERSION_HEADER, "ignored-version") + .header(BrokerApiVersion.DEFAULT_API_VERSION_HEADER, "ignored-version") .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); } private MockMvc mockWithDefaultVersion() { return MockMvcBuilders.standaloneSetup(controller) - .addInterceptors(new BrokerApiVersionInterceptor(new BrokerApiVersion())) + .addInterceptors(new ApiVersionInterceptor(new BrokerApiVersion())) .setMessageConverters(new MappingJackson2HttpMessageConverter()).build(); } private MockMvc mockWithExpectedVersion() { return MockMvcBuilders.standaloneSetup(controller) - .addInterceptors(new BrokerApiVersionInterceptor(new BrokerApiVersion("expected-version"))) + .addInterceptors(new ApiVersionInterceptor(new BrokerApiVersion("expected-version"))) .setMessageConverters(new MappingJackson2HttpMessageConverter()).build(); } } diff --git a/src/test/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptorTest.java b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptorTest.java similarity index 83% rename from src/test/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptorTest.java rename to spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptorTest.java index 75a8d499..f9b9da8c 100644 --- a/src/test/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptorTest.java +++ b/spring-cloud-starter-service-broker-webmvc/src/test/java/org/springframework/cloud/servicebroker/webmvc/interceptor/ApiVersionInterceptorTest.java @@ -1,4 +1,4 @@ -package org.springframework.cloud.servicebroker.interceptor; +package org.springframework.cloud.servicebroker.webmvc.interceptor; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.atLeastOnce; @@ -12,20 +12,20 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.cloud.servicebroker.exception.ServiceBrokerApiVersionException; -import org.springframework.cloud.servicebroker.model.BrokerApiVersion; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.springframework.cloud.servicebroker.model.BrokerApiVersion; -public class BrokerApiVersionInterceptorTest { +public class ApiVersionInterceptorTest { @Mock private HttpServletRequest request; - - @Mock + + @Mock private HttpServletResponse response; - + @Mock private BrokerApiVersion brokerApiVersion; @@ -33,10 +33,10 @@ public class BrokerApiVersionInterceptorTest { public void setup() { MockitoAnnotations.initMocks(this); } - + @Test public void noBrokerApiVersionConfigured() throws IOException, ServletException, ServiceBrokerApiVersionException { - BrokerApiVersionInterceptor interceptor = new BrokerApiVersionInterceptor(null); + ApiVersionInterceptor interceptor = new ApiVersionInterceptor(null); assertTrue(interceptor.preHandle(request, response, null)); } @@ -47,8 +47,8 @@ public class BrokerApiVersionInterceptorTest { when(brokerApiVersion.getBrokerApiVersionHeader()).thenReturn(header); when(brokerApiVersion.getApiVersion()).thenReturn(version); when(request.getHeader(header)).thenReturn("version"); - - BrokerApiVersionInterceptor interceptor = new BrokerApiVersionInterceptor(brokerApiVersion); + + ApiVersionInterceptor interceptor = new ApiVersionInterceptor(brokerApiVersion); assertTrue(interceptor.preHandle(request, response, null)); verify(brokerApiVersion, atLeastOnce()).getApiVersion(); } @@ -61,7 +61,7 @@ public class BrokerApiVersionInterceptorTest { when(brokerApiVersion.getApiVersion()).thenReturn(version); when(request.getHeader(header)).thenReturn(version); - BrokerApiVersionInterceptor interceptor = new BrokerApiVersionInterceptor(brokerApiVersion); + ApiVersionInterceptor interceptor = new ApiVersionInterceptor(brokerApiVersion); assertTrue(interceptor.preHandle(request, response, null)); verify(brokerApiVersion, atLeastOnce()).getApiVersion(); } @@ -74,11 +74,11 @@ public class BrokerApiVersionInterceptorTest { when(brokerApiVersion.getBrokerApiVersionHeader()).thenReturn(header); when(brokerApiVersion.getApiVersion()).thenReturn(version); when(request.getHeader(header)).thenReturn(notVersion); - - BrokerApiVersionInterceptor interceptor = new BrokerApiVersionInterceptor(brokerApiVersion); + + ApiVersionInterceptor interceptor = new ApiVersionInterceptor(brokerApiVersion); interceptor.preHandle(request, response, null); verify(brokerApiVersion).getBrokerApiVersionHeader(); verify(brokerApiVersion).getApiVersion(); } - + } diff --git a/src/main/java/org/springframework/cloud/servicebroker/config/BrokerApiVersionConfig.java b/src/main/java/org/springframework/cloud/servicebroker/config/BrokerApiVersionConfig.java deleted file mode 100644 index 36f58c81..00000000 --- a/src/main/java/org/springframework/cloud/servicebroker/config/BrokerApiVersionConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.springframework.cloud.servicebroker.config; - -import org.springframework.cloud.servicebroker.interceptor.BrokerApiVersionInterceptor; -import org.springframework.cloud.servicebroker.model.BrokerApiVersion; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -@Configuration -public class BrokerApiVersionConfig { - @Bean - public BrokerApiVersionInterceptor brokerApiVersionInterceptor(BrokerApiVersion brokerApiVersion) { - return new BrokerApiVersionInterceptor(brokerApiVersion); - } -} \ No newline at end of file diff --git a/src/main/java/org/springframework/cloud/servicebroker/config/ServiceBrokerAutoConfiguration.java b/src/main/java/org/springframework/cloud/servicebroker/config/ServiceBrokerAutoConfiguration.java deleted file mode 100644 index aa970071..00000000 --- a/src/main/java/org/springframework/cloud/servicebroker/config/ServiceBrokerAutoConfiguration.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.springframework.cloud.servicebroker.config; - -import org.springframework.cloud.servicebroker.model.BrokerApiVersion; -import org.springframework.cloud.servicebroker.model.Catalog; -import org.springframework.cloud.servicebroker.service.BeanCatalogService; -import org.springframework.cloud.servicebroker.service.CatalogService; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; -import org.springframework.cloud.servicebroker.service.NonBindableServiceInstanceBindingService; -import org.springframework.cloud.servicebroker.service.ServiceInstanceBindingService; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -@Configuration -@ComponentScan(basePackages = {"org.springframework.cloud.servicebroker"}) -@ConditionalOnWebApplication -@AutoConfigureAfter(WebMvcAutoConfiguration.class) -public class ServiceBrokerAutoConfiguration { - - @Bean - @ConditionalOnMissingBean(BrokerApiVersion.class) - public BrokerApiVersion brokerApiVersion() { - return new BrokerApiVersion(); - } - - @Bean - @ConditionalOnMissingBean(CatalogService.class) - public CatalogService beanCatalogService(Catalog catalog) { - return new BeanCatalogService(catalog); - } - - @Bean - @ConditionalOnMissingBean(ServiceInstanceBindingService.class) - public ServiceInstanceBindingService nonBindableServiceInstanceBindingService() { - return new NonBindableServiceInstanceBindingService(); - } -} \ No newline at end of file diff --git a/src/main/java/org/springframework/cloud/servicebroker/config/WebMvcConfiguration.java b/src/main/java/org/springframework/cloud/servicebroker/config/WebMvcConfiguration.java deleted file mode 100644 index 4c21b327..00000000 --- a/src/main/java/org/springframework/cloud/servicebroker/config/WebMvcConfiguration.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.springframework.cloud.servicebroker.config; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.servicebroker.interceptor.BrokerApiVersionInterceptor; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; - -@Configuration -@EnableWebMvc -public class WebMvcConfiguration extends WebMvcConfigurerAdapter { - private static final String V2_API_PATH_PATTERN = "/v2/**"; - - @Autowired - private BrokerApiVersionInterceptor brokerApiVersionInterceptor; - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(brokerApiVersionInterceptor).addPathPatterns(V2_API_PATH_PATTERN); - } -} \ No newline at end of file diff --git a/src/main/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptor.java b/src/main/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptor.java deleted file mode 100644 index 2a050855..00000000 --- a/src/main/java/org/springframework/cloud/servicebroker/interceptor/BrokerApiVersionInterceptor.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.springframework.cloud.servicebroker.interceptor; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.springframework.cloud.servicebroker.exception.ServiceBrokerApiVersionException; -import org.springframework.cloud.servicebroker.model.BrokerApiVersion; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; - -public class BrokerApiVersionInterceptor extends HandlerInterceptorAdapter { - - private final BrokerApiVersion version; - - public BrokerApiVersionInterceptor() { - this(null); - } - - public BrokerApiVersionInterceptor(BrokerApiVersion version) { - this.version = version; - } - - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, - Object handler) throws ServiceBrokerApiVersionException { - if (version != null && !anyVersionAllowed()) { - String apiVersion = request.getHeader(version.getBrokerApiVersionHeader()); - if (!version.getApiVersion().equals(apiVersion)) { - throw new ServiceBrokerApiVersionException(version.getApiVersion(), apiVersion); - } - } - return true; - } - - private boolean anyVersionAllowed() { - return BrokerApiVersion.API_VERSION_ANY.equals(version.getApiVersion()); - } - -} diff --git a/src/main/java/org/springframework/cloud/servicebroker/model/BrokerApiVersion.java b/src/main/java/org/springframework/cloud/servicebroker/model/BrokerApiVersion.java deleted file mode 100644 index 5ce873b6..00000000 --- a/src/main/java/org/springframework/cloud/servicebroker/model/BrokerApiVersion.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.springframework.cloud.servicebroker.model; - - -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.ToString; - -@Getter -@ToString -@EqualsAndHashCode -public class BrokerApiVersion { - - public final static String DEFAULT_API_VERSION_HEADER = "X-Broker-Api-Version"; - public final static String API_VERSION_ANY = "*"; - public final static String API_VERSION_CURRENT = "2.13"; - - /** - * The name of the HTTP header field expected to contain the API version of the service broker client. - */ - private final String brokerApiVersionHeader; - - /** - * The version of the broker API supported by the broker. A value of null or - * API_VERSION_ANY will disable API version validation. - */ - private final String apiVersion; - - public BrokerApiVersion(String brokerApiVersionHeader, String apiVersion) { - this.brokerApiVersionHeader = brokerApiVersionHeader; - this.apiVersion = apiVersion; - } - - public BrokerApiVersion(String apiVersion) { - this(DEFAULT_API_VERSION_HEADER, apiVersion); - } - - public BrokerApiVersion() { - this(DEFAULT_API_VERSION_HEADER, API_VERSION_ANY); - } -} diff --git a/src/main/resources/META-INF/spring.factories b/src/main/resources/META-INF/spring.factories deleted file mode 100644 index 54f1ce35..00000000 --- a/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -org.springframework.cloud.servicebroker.config.ServiceBrokerAutoConfiguration \ No newline at end of file