From 7594313bea0ddb1e3d10cd8864972b8d55da1011 Mon Sep 17 00:00:00 2001
From: xiaolongzuo <150349407@qq.com>
Date: Tue, 30 Oct 2018 15:30:08 +0800
Subject: [PATCH] optimize spring-cloud-alicloud-oss module.
---
.../cloud/examples/OSSApplication.java | 51 -----
.../alibaba/cloud/examples/OSSController.java | 72 ------
.../cloud/examples/OssApplication.java | 51 +++++
.../alibaba/cloud/examples/OssController.java | 70 ++++++
.../src/main/resources/application.properties | 10 +-
spring-cloud-alicloud-oss/pom.xml | 5 +
.../cloud/alibaba/oss/OSSProperties.java | 118 ----------
.../alibaba/oss/endpoint/OSSEndpoint.java | 80 -------
.../resource/OSSStorageProtocolResolver.java | 84 -------
.../oss/resource/OSSStorageResource.java | 208 -----------------
.../oss/OssApplicationListener.java} | 33 +--
.../oss/OssAutoConfiguration.java} | 37 +--
.../oss/OssConstants.java} | 6 +-
.../alicloud/oss/endpoint/OssEndpoint.java | 80 +++++++
.../OssEndpointAutoConfiguration.java} | 20 +-
.../resource/OssStorageProtocolResolver.java | 84 +++++++
.../oss/resource/OssStorageResource.java | 211 ++++++++++++++++++
.../main/resources/META-INF/spring.factories | 6 +-
.../oss/OSSAutoConfigurationTests.java | 75 -------
.../OSSMultiClientAutoConfigurationTests.java | 116 ----------
20 files changed, 548 insertions(+), 869 deletions(-)
delete mode 100644 spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java
delete mode 100644 spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java
create mode 100644 spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OssApplication.java
create mode 100644 spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OssController.java
delete mode 100644 spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSProperties.java
delete mode 100644 spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpoint.java
delete mode 100644 spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/resource/OSSStorageProtocolResolver.java
delete mode 100644 spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/resource/OSSStorageResource.java
rename spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/{alibaba/oss/OSSApplicationListener.java => alicloud/oss/OssApplicationListener.java} (58%)
rename spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/{alibaba/oss/OSSAutoConfiguration.java => alicloud/oss/OssAutoConfiguration.java} (51%)
rename spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/{alibaba/oss/OSSConstants.java => alicloud/oss/OssConstants.java} (90%)
create mode 100644 spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alicloud/oss/endpoint/OssEndpoint.java
rename spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/{alibaba/oss/endpoint/OSSEndpointAutoConfiguration.java => alicloud/oss/endpoint/OssEndpointAutoConfiguration.java} (76%)
create mode 100644 spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alicloud/oss/resource/OssStorageProtocolResolver.java
create mode 100644 spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alicloud/oss/resource/OssStorageResource.java
delete mode 100644 spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss/OSSAutoConfigurationTests.java
delete mode 100644 spring-cloud-alicloud-oss/src/test/java/org/springframework/cloud/alibaba/oss/OSSMultiClientAutoConfigurationTests.java
diff --git a/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java b/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java
deleted file mode 100644
index dd5794d50..000000000
--- a/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSApplication.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.springframework.cloud.alibaba.cloud.examples;
-
-import java.net.URISyntaxException;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.ApplicationArguments;
-import org.springframework.boot.ApplicationRunner;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
-
-import com.aliyun.oss.OSS;
-
-/**
- * OSS Application
- *
- * @author Jim
- */
-@SpringBootApplication
-public class OSSApplication {
-
- public static final String BUCKET_NAME = "spring-cloud-alibaba";
-
- public static void main(String[] args) throws URISyntaxException {
- SpringApplication.run(OSSApplication.class, args);
- }
-
- @Bean
- public AppRunner appRunner() {
- return new AppRunner();
- }
-
- class AppRunner implements ApplicationRunner {
- @Autowired
- private OSS ossClient;
-
- @Override
- public void run(ApplicationArguments args) throws Exception {
- try {
- if (!ossClient.doesBucketExist(BUCKET_NAME)) {
- ossClient.createBucket(BUCKET_NAME);
- }
- }
- catch (Exception e) {
- System.err.println("oss handle bucket error: " + e.getMessage());
- System.exit(-1);
- }
- }
- }
-
-}
\ No newline at end of file
diff --git a/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java b/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java
deleted file mode 100644
index 2da11529e..000000000
--- a/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OSSController.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.springframework.cloud.alibaba.cloud.examples;
-
-import java.nio.charset.Charset;
-
-import org.apache.commons.codec.CharEncoding;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.core.io.Resource;
-import org.springframework.util.StreamUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import com.aliyun.oss.OSS;
-import com.aliyun.oss.common.utils.IOUtils;
-import com.aliyun.oss.model.OSSObject;
-
-/**
- * OSS Controller
- *
- * @author Jim
- */
-@RestController
-public class OSSController {
-
- @Autowired
- private OSS ossClient;
-
- @Value("oss://" + OSSApplication.BUCKET_NAME + "/oss-test")
- private Resource file;
-
- private String dir = "custom-dir/";
-
- @GetMapping("/upload")
- public String upload() {
- try {
- ossClient.putObject(OSSApplication.BUCKET_NAME, dir + "oss-test", this
- .getClass().getClassLoader().getResourceAsStream("oss-test.json"));
- }
- catch (Exception e) {
- e.printStackTrace();
- return "upload fail: " + e.getMessage();
- }
- return "upload success";
- }
-
- @GetMapping("/file-resource")
- public String fileResource() {
- try {
- return "get file resource success. content: " + StreamUtils.copyToString(
- file.getInputStream(), Charset.forName(CharEncoding.UTF_8));
- }
- catch (Exception e) {
- e.printStackTrace();
- return "get resource fail: " + e.getMessage();
- }
- }
-
- @GetMapping("/download")
- public String download() {
- try {
- OSSObject ossObject = ossClient.getObject(OSSApplication.BUCKET_NAME,
- dir + "oss-test");
- return "download success, content: " + IOUtils
- .readStreamAsString(ossObject.getObjectContent(), CharEncoding.UTF_8);
- }
- catch (Exception e) {
- e.printStackTrace();
- return "download fail: " + e.getMessage();
- }
- }
-
-}
\ No newline at end of file
diff --git a/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OssApplication.java b/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OssApplication.java
new file mode 100644
index 000000000..7997ac02e
--- /dev/null
+++ b/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OssApplication.java
@@ -0,0 +1,51 @@
+package org.springframework.cloud.alibaba.cloud.examples;
+
+import java.net.URISyntaxException;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+import com.aliyun.oss.OSS;
+
+/**
+ * OSS Application
+ *
+ * @author Jim
+ */
+@SpringBootApplication
+public class OssApplication {
+
+ public static final String BUCKET_NAME = "spring-cloud-alibaba-test";
+
+ public static void main(String[] args) throws URISyntaxException {
+ SpringApplication.run(OssApplication.class, args);
+ }
+
+ @Bean
+ public AppRunner appRunner() {
+ return new AppRunner();
+ }
+
+ class AppRunner implements ApplicationRunner {
+ @Autowired
+ private OSS ossClient;
+
+ @Override
+ public void run(ApplicationArguments args) throws Exception {
+ try {
+ if (!ossClient.doesBucketExist(BUCKET_NAME)) {
+ ossClient.createBucket(BUCKET_NAME);
+ }
+ }
+ catch (Exception e) {
+ System.err.println("oss handle bucket error: " + e.getMessage());
+ System.exit(-1);
+ }
+ }
+ }
+
+}
diff --git a/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OssController.java b/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OssController.java
new file mode 100644
index 000000000..97623f5b4
--- /dev/null
+++ b/spring-cloud-alibaba-examples/oss-example/src/main/java/org/springframework/cloud/alibaba/cloud/examples/OssController.java
@@ -0,0 +1,70 @@
+package org.springframework.cloud.alibaba.cloud.examples;
+
+import java.nio.charset.Charset;
+
+import org.apache.commons.codec.CharEncoding;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.Resource;
+import org.springframework.util.StreamUtils;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.common.utils.IOUtils;
+import com.aliyun.oss.model.OSSObject;
+
+/**
+ * OSS Controller
+ *
+ * @author Jim
+ */
+@RestController
+public class OssController {
+
+ @Autowired
+ private OSS ossClient;
+
+ @Value("oss://" + OssApplication.BUCKET_NAME + "/oss-test.json")
+ private Resource file;
+
+ @GetMapping("/upload")
+ public String upload() {
+ try {
+ ossClient.putObject(OssApplication.BUCKET_NAME, "oss-test.json", this
+ .getClass().getClassLoader().getResourceAsStream("oss-test.json"));
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ return "upload fail: " + e.getMessage();
+ }
+ return "upload success";
+ }
+
+ @GetMapping("/file-resource")
+ public String fileResource() {
+ try {
+ return "get file resource success. content: " + StreamUtils.copyToString(
+ file.getInputStream(), Charset.forName(CharEncoding.UTF_8));
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ return "get resource fail: " + e.getMessage();
+ }
+ }
+
+ @GetMapping("/download")
+ public String download() {
+ try {
+ OSSObject ossObject = ossClient.getObject(OssApplication.BUCKET_NAME,
+ "oss-test.json");
+ return "download success, content: " + IOUtils
+ .readStreamAsString(ossObject.getObjectContent(), CharEncoding.UTF_8);
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ return "download fail: " + e.getMessage();
+ }
+ }
+
+}
diff --git a/spring-cloud-alibaba-examples/oss-example/src/main/resources/application.properties b/spring-cloud-alibaba-examples/oss-example/src/main/resources/application.properties
index af414af5e..59c650d3d 100644
--- a/spring-cloud-alibaba-examples/oss-example/src/main/resources/application.properties
+++ b/spring-cloud-alibaba-examples/oss-example/src/main/resources/application.properties
@@ -1,8 +1,6 @@
spring.application.name=oss-example
server.port=18084
-
-spring.cloud.alibaba.oss.accessKeyId=[your-ak]
-spring.cloud.alibaba.oss.secretAccessKey=[your-sk]
-spring.cloud.alibaba.oss.region=[your-region]
-
-management.security.enabled=false
\ No newline at end of file
+spring.cloud.alicloud.access-key=AK
+spring.cloud.alicloud.secret-key=SK
+spring.cloud.alicloud.oss.endpoint=***.aliyuncs.com
+management.endpoints.web.exposure.include=*
diff --git a/spring-cloud-alicloud-oss/pom.xml b/spring-cloud-alicloud-oss/pom.xml
index 72b5f8fcc..d7d224d5f 100644
--- a/spring-cloud-alicloud-oss/pom.xml
+++ b/spring-cloud-alicloud-oss/pom.xml
@@ -15,6 +15,11 @@
+
+ org.springframework.cloud
+ spring-cloud-alicloud-context
+
+
com.aliyun.oss
aliyun-sdk-oss
diff --git a/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSProperties.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSProperties.java
deleted file mode 100644
index 8ea389262..000000000
--- a/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/OSSProperties.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2018 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.alibaba.oss;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-import com.aliyun.oss.ClientBuilderConfiguration;
-
-/**
- * {@link ConfigurationProperties} for configuring OSS.
- *
- * @author Jim
- */
-@ConfigurationProperties(prefix = OSSConstants.PREFIX)
-public class OSSProperties {
-
- private static final Logger logger = LoggerFactory.getLogger(OSSProperties.class);
-
- public static final Map endpointMap = new HashMap<>();
-
- static {
- endpointMap.put("cn-beijing", "http://oss-cn-beijing.aliyuncs.com");
- endpointMap.put("cn-qingdao", "http://oss-cn-qingdao.aliyuncs.com");
- endpointMap.put("cn-hangzhou", "http://oss-cn-hangzhou.aliyuncs.com");
- endpointMap.put("cn-hongkong", "http://oss-cn-hongkong.aliyuncs.com");
- endpointMap.put("cn-shenzhen", "http://oss-cn-shenzhen.aliyuncs.com");
- endpointMap.put("us-west-1", "http://oss-us-west-1.aliyuncs.com");
- endpointMap.put("ap-southeast-1", "http://oss-ap-southeast-1.aliyuncs.com");
- }
-
- private ClientBuilderConfiguration configuration;
-
- private String accessKeyId;
-
- private String secretAccessKey;
-
- private String region;
-
- private String endpoint;
-
- // support ram sts
- private String securityToken;
-
- public ClientBuilderConfiguration getConfiguration() {
- return configuration;
- }
-
- public void setConfiguration(ClientBuilderConfiguration configuration) {
- this.configuration = configuration;
- }
-
- public String getAccessKeyId() {
- return accessKeyId;
- }
-
- public void setAccessKeyId(String accessKeyId) {
- this.accessKeyId = accessKeyId;
- }
-
- public String getSecretAccessKey() {
- return secretAccessKey;
- }
-
- public void setSecretAccessKey(String secretAccessKey) {
- this.secretAccessKey = secretAccessKey;
- }
-
- public String getEndpoint() {
- return endpoint;
- }
-
- public void setEndpoint(String endpoint) {
- this.endpoint = endpoint;
- }
-
- public String getSecurityToken() {
- return securityToken;
- }
-
- public void setSecurityToken(String securityToken) {
- this.securityToken = securityToken;
- }
-
- public String getRegion() {
- return region;
- }
-
- public void setRegion(String region) {
- if (!endpointMap.containsKey(region)) {
- String errorStr = "error region: " + region + ", please choose from "
- + Arrays.toString(endpointMap.keySet().toArray());
- logger.error(errorStr);
- throw new IllegalArgumentException(errorStr);
- }
- this.region = region;
- this.setEndpoint(endpointMap.get(region));
- }
-}
\ No newline at end of file
diff --git a/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpoint.java b/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpoint.java
deleted file mode 100644
index 21809a980..000000000
--- a/spring-cloud-alicloud-oss/src/main/java/org/springframework/cloud/alibaba/oss/endpoint/OSSEndpoint.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2018 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.alibaba.oss.endpoint;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.endpoint.AbstractEndpoint;
-import org.springframework.context.ApplicationContext;
-
-import com.aliyun.oss.OSSClient;
-
-/**
- * Actuator Endpoint to expose OSS Meta Data
- *
- * @author Jim
- */
-public class OSSEndpoint extends AbstractEndpoint