Skip to content

Commit 2f360b4

Browse files
authored
Merge pull request #75 from iminright/ossclientfactory
Ossclientfactory
2 parents e61c6e6 + fe03bc4 commit 2f360b4

File tree

15 files changed

+358
-63
lines changed

15 files changed

+358
-63
lines changed

rdf-file-core/src/main/java/com/alipay/rdf/file/common/CacheManager.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
package com.alipay.rdf.file.common;
22

3-
import java.util.Iterator;
4-
53
import com.alipay.rdf.file.function.ColumnFunctionWrapper;
6-
import com.alipay.rdf.file.loader.FormatLoader;
7-
import com.alipay.rdf.file.loader.ProcessorLoader;
8-
import com.alipay.rdf.file.loader.ProtocolLoader;
9-
import com.alipay.rdf.file.loader.ResourceLoader;
10-
import com.alipay.rdf.file.loader.TemplateLoader;
4+
import com.alipay.rdf.file.loader.*;
115
import com.alipay.rdf.file.model.FileDefaultConfig;
126
import com.alipay.rdf.file.util.RdfFileUtil;
137

8+
import java.util.Iterator;
9+
1410
/**
1511
* Copyright (C) 2013-2018 Ant Financial Services Group
1612
*
@@ -90,4 +86,5 @@ public static void removeProtocolDefaultProcessorsCache(String protocol) {
9086
ProtocolLoader.PROTOCOL_PROCESSOR_CACHE.remove(protocol.toLowerCase());
9187
ProtocolLoader.PD_CACHE.remove(protocol.toLowerCase());
9288
}
89+
9390
}

rdf-file-core/src/main/java/com/alipay/rdf/file/loader/ExtensionLoader.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,6 @@ public T getNewExtension(String name) {
6363
Class<?> clazz = getExtensionClasses().get(RdfFileUtil.assertTrimNotBlank(name,
6464
"rdf-file#Extension name == null", RdfErrorEnum.ILLEGAL_ARGUMENT));
6565

66-
if (clazz == null) {
67-
System.out.println(cachedClasses);
68-
}
69-
7066
RdfFileUtil.assertNotNull(clazz,
7167
"rdf-file#Extension type=" + type.getName() + ", name =" + name + ", class == null",
7268
RdfErrorEnum.EXTENSION_ERROR);

rdf-file-core/src/main/java/com/alipay/rdf/file/loader/FileStorageLoader.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package com.alipay.rdf.file.loader;
22

3-
import java.util.Collections;
4-
import java.util.Map;
5-
import java.util.WeakHashMap;
6-
73
import com.alipay.rdf.file.init.RdfInit;
84
import com.alipay.rdf.file.interfaces.FileStorage;
95
import com.alipay.rdf.file.model.StorageConfig;
106
import com.alipay.rdf.file.spi.RdfFileStorageSpi;
117
import com.alipay.rdf.file.util.RdfFileUtil;
128

9+
import java.util.Collections;
10+
import java.util.Map;
11+
import java.util.WeakHashMap;
12+
1313
/**
1414
* Copyright (C) 2013-2018 Ant Financial Services Group
1515
*
@@ -49,4 +49,5 @@ public static FileStorage getFileStorage(StorageConfig storageConfig) {
4949

5050
return fileStorage;
5151
}
52+
5253
}

rdf-file-core/src/main/java/com/alipay/rdf/file/model/StorageConfig.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public void addParam(String key, Object value) {
2929
"rdf-file#StorageConfig.addParam value 必须实现Object对象中的equals方法",
3030
RdfErrorEnum.ILLEGAL_ARGUMENT);
3131
param.put(key, value);
32-
param.put(key, value);
3332
}
3433

3534
public Object getParam(String key) {

rdf-file-core/src/test/java/com/alipay/rdf/file/cache/CacheManagerTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,5 @@ public void testRemoveFormatCache() {
117117
Assert.assertNull(FormatLoader.TYPEFORMATHOLDER_CACHE.get("fund"));
118118
Assert.assertNull(FormatLoader.TYPEFORMATHOLDER_CACHE.get("FUND"));
119119
}
120+
120121
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/*
2+
* Alipay.com Inc.
3+
* Copyright (c) 2004-2022 All Rights Reserved.
4+
*/
5+
package com.alipay.rdf.file.spi;
6+
7+
import com.alipay.rdf.file.storage.OssConfig;
8+
import com.aliyun.oss.OSSClient;
9+
10+
/**
11+
*
12+
* 用于扩展OSSClient的创建方式
13+
*
14+
* @author wanhaofan
15+
* @version RdfFileOssClientFactorySpi.java, v 0.1 2022年05月24日 11:35 AM wanhaofan
16+
*/
17+
public interface RdfFileOssClientFactorySpi {
18+
19+
/**
20+
* 使用方可以贡献自定义实现OSSClient,用于扩展一些特殊的能力,比如容灾等
21+
* @param ossConfig
22+
* @return
23+
*/
24+
OSSClient create(OssConfig ossConfig);
25+
26+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Alipay.com Inc.
3+
* Copyright (c) 2004-2022 All Rights Reserved.
4+
*/
5+
package com.alipay.rdf.file.storage;
6+
7+
import com.alipay.rdf.file.spi.RdfFileOssClientFactorySpi;
8+
import com.alipay.rdf.file.util.RdfFileLogUtil;
9+
import com.aliyun.oss.OSSClient;
10+
11+
/**
12+
* 获取ossclient的默认实现
13+
*
14+
* @author wanhaofan
15+
* @version DefaultOssClientFactory.java, v 0.1 2022年05月24日 11:49 AM wanhaofan
16+
*/
17+
public class DefaultOssClientFactory implements RdfFileOssClientFactorySpi {
18+
19+
@Override
20+
public OSSClient create(OssConfig ossConfig) {
21+
if (RdfFileLogUtil.common.isInfo()) {
22+
RdfFileLogUtil.common.info("rdf-file#DefaultOssClientFactory.create(endpoint=" + ossConfig.getEndpoint() +
23+
",bucket=" + ossConfig.getBucketName() +
24+
",ak=" + ossConfig.getAccessKeyId() + ")");
25+
}
26+
return new OSSClient(ossConfig.getEndpoint(), ossConfig.getAccessKeyId(),
27+
ossConfig.getAccessKeySecret(), ossConfig.getClientConfiguration());
28+
}
29+
}

rdf-file-oss/src/main/java/com/alipay/rdf/file/storage/FileOssStorage.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
import com.alipay.rdf.file.exception.RdfErrorEnum;
44
import com.alipay.rdf.file.exception.RdfFileException;
55
import com.alipay.rdf.file.interfaces.FileFactory;
6+
import com.alipay.rdf.file.loader.ExtensionLoader;
67
import com.alipay.rdf.file.model.FileConfig;
78
import com.alipay.rdf.file.model.FileInfo;
89
import com.alipay.rdf.file.model.FileSlice;
910
import com.alipay.rdf.file.model.StorageConfig;
11+
import com.alipay.rdf.file.spi.RdfFileOssClientFactorySpi;
1012
import com.alipay.rdf.file.spi.RdfFileSplitterSpi;
1113
import com.alipay.rdf.file.spi.RdfFileStorageSpi;
1214
import com.alipay.rdf.file.util.RdfFileLogUtil;
@@ -39,8 +41,12 @@ public void init(StorageConfig storageConfig) {
3941
RdfFileUtil.assertNotNull(config, "rdf-file#StorageConfig中没有传递key="
4042
+ OssConfig.OSS_STORAGE_CONFIG_KEY + " 的OssConfig对象参数",
4143
RdfErrorEnum.ILLEGAL_ARGUMENT);
42-
this.client = new OSSClient(config.getEndpoint(), config.getAccessKeyId(),
43-
config.getAccessKeySecret(), config.getClientConfiguration());
44+
RdfFileOssClientFactorySpi factory = ExtensionLoader.getExtensionLoader(RdfFileOssClientFactorySpi.class)
45+
.getExtension(config.getOssClientFactoryType());
46+
RdfFileUtil.assertNotNull(factory, "rdf-file#FileOssStorage.init OssClientFactoryType未定义" +
47+
",OssClientFactoryType=" + config.getOssClientFactoryType(),
48+
RdfErrorEnum.ILLEGAL_ARGUMENT);
49+
this.client = factory.create(config);
4450
if (!client.doesBucketExist(config.getBucketName())) {
4551
client.createBucket(config.getBucketName());
4652
}

rdf-file-oss/src/main/java/com/alipay/rdf/file/storage/OssConfig.java

Lines changed: 52 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,20 @@ public class OssConfig {
3131
/**追加上传的次数没有限制,文件大小上限为5GB*/
3232
private static final long OSS_APPEND_SIZE_LIMIT = 5 * 1024L * 1024L * 1024L;
3333

34-
private final String bucketName;
35-
private final String endpoint;
36-
private final String accessKeyId;
37-
private final String accessKeySecret;
38-
private final ClientConfiguration clientConfiguration;
34+
private String bucketName;
35+
36+
37+
private String endpoint;
38+
private String accessKeyId;
39+
private String accessKeySecret;
40+
private ClientConfiguration clientConfiguration;
41+
42+
/**
43+
* 默认使用com.alipay.rdf.file.storage.DefaultOssClientFactory进行创建
44+
*/
45+
private String ossClientFactoryType = "default";
46+
47+
3948
/**
4049
* 写文件时OSS本地文件根目录
4150
* <li>写文件时会先写在本地再上传到OSS
@@ -54,6 +63,17 @@ public class OssConfig {
5463
*/
5564
private boolean emptyLeZero = false;
5665

66+
public OssConfig(String bucketName, String ossClientFactoryType) {
67+
this.bucketName = bucketName;
68+
this.ossClientFactoryType = ossClientFactoryType;
69+
}
70+
71+
public OssConfig(String bucketName, String ossClientFactoryType, ClientConfiguration clientConfiguration) {
72+
this.bucketName = bucketName;
73+
this.ossClientFactoryType = ossClientFactoryType;
74+
this.clientConfiguration = clientConfiguration;
75+
}
76+
5777
public OssConfig(String bucketName, String endpoint, String accessKeyId,
5878
String accessKeySecret) {
5979
this(bucketName, endpoint, accessKeyId, accessKeySecret, null);
@@ -150,46 +170,37 @@ public void setEmptyLeZero(boolean emptyLeZero) {
150170
this.emptyLeZero = emptyLeZero;
151171
}
152172

153-
@Override
154-
public int hashCode() {
155-
final int prime = 31;
156-
int result = 1;
157-
result = prime * result + ((accessKeyId == null) ? 0 : accessKeyId.hashCode());
158-
result = prime * result + ((accessKeySecret == null) ? 0 : accessKeySecret.hashCode());
159-
result = prime * result + ((bucketName == null) ? 0 : bucketName.hashCode());
160-
result = prime * result + ((endpoint == null) ? 0 : endpoint.hashCode());
161-
return result;
173+
public String getOssClientFactoryType() {
174+
return ossClientFactoryType;
175+
}
176+
177+
public void setOssClientFactoryType(String ossClientFactoryType) {
178+
this.ossClientFactoryType = ossClientFactoryType;
162179
}
163180

164181
@Override
165-
public boolean equals(Object obj) {
166-
if (this == obj)
167-
return true;
168-
if (obj == null)
169-
return false;
170-
if (getClass() != obj.getClass())
171-
return false;
172-
OssConfig other = (OssConfig) obj;
173-
if (accessKeyId == null) {
174-
if (other.accessKeyId != null)
175-
return false;
176-
} else if (!accessKeyId.equals(other.accessKeyId))
177-
return false;
178-
if (accessKeySecret == null) {
179-
if (other.accessKeySecret != null)
180-
return false;
181-
} else if (!accessKeySecret.equals(other.accessKeySecret))
182-
return false;
183-
if (bucketName == null) {
184-
if (other.bucketName != null)
185-
return false;
186-
} else if (!bucketName.equals(other.bucketName))
182+
public boolean equals(Object o) {
183+
if (this == o) return true;
184+
if (o == null || getClass() != o.getClass()) return false;
185+
186+
OssConfig ossConfig = (OssConfig) o;
187+
188+
if (bucketName != null ? !bucketName.equals(ossConfig.bucketName) : ossConfig.bucketName != null) return false;
189+
if (endpoint != null ? !endpoint.equals(ossConfig.endpoint) : ossConfig.endpoint != null) return false;
190+
if (accessKeyId != null ? !accessKeyId.equals(ossConfig.accessKeyId) : ossConfig.accessKeyId != null)
187191
return false;
188-
if (endpoint == null) {
189-
if (other.endpoint != null)
190-
return false;
191-
} else if (!endpoint.equals(other.endpoint))
192+
if (accessKeySecret != null ? !accessKeySecret.equals(ossConfig.accessKeySecret) : ossConfig.accessKeySecret != null)
192193
return false;
193-
return true;
194+
return ossClientFactoryType != null ? ossClientFactoryType.equals(ossConfig.ossClientFactoryType) : ossConfig.ossClientFactoryType == null;
195+
}
196+
197+
@Override
198+
public int hashCode() {
199+
int result = bucketName != null ? bucketName.hashCode() : 0;
200+
result = 31 * result + (endpoint != null ? endpoint.hashCode() : 0);
201+
result = 31 * result + (accessKeyId != null ? accessKeyId.hashCode() : 0);
202+
result = 31 * result + (accessKeySecret != null ? accessKeySecret.hashCode() : 0);
203+
result = 31 * result + (ossClientFactoryType != null ? ossClientFactoryType.hashCode() : 0);
204+
return result;
194205
}
195206
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
default=com.alipay.rdf.file.storage.DefaultOssClientFactory

0 commit comments

Comments
 (0)