Skip to content

Commit cb96369

Browse files
author
hongwei.quhw
committed
add test case
1 parent 989bba8 commit cb96369

File tree

6 files changed

+172
-7
lines changed

6 files changed

+172
-7
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,12 @@ public static RdfInputStream getInputStream(String path) {
5050
path = path.substring(idx + 1);
5151
}
5252

53-
idx = path.indexOf(RESOURCE_KEY);
53+
idx = path.indexOf(RdfFileUtil.QUESTION);
5454
if (idx > -1) {
5555
path = path.substring(idx + 1);
5656
}
5757

58-
String cacheKey = resourceType + resourceValue == null ? "" : resourceValue;
58+
String cacheKey = resourceType + (resourceValue == null ? RdfFileUtil.EMPTY : resourceValue);
5959

6060
RdfFileResourceSpi rdfResource = RESOURCE_CACHE.get(cacheKey);
6161

rdf-file-core/src/main/java/com/alipay/rdf/file/resource/ClasspathRdfResource.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@
1212
*/
1313
public class ClasspathRdfResource extends AbstractRdfResources {
1414

15-
/**
16-
* @see com.alipay.rdf.file.spi.RdfFileResourceSpi#getInputStream()
17-
*/
1815
@Override
1916
public RdfInputStream getInputStream(String path) {
2017
InputStream is = RdfFileUtil.getDefaultClassLoader().getResourceAsStream(path);

rdf-file-core/src/main/java/com/alipay/rdf/file/util/RdfFileUtil.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,15 @@
2626
* @version $Id: RdfUtil.java, v 0.1 2017年8月8日 上午11:29:42 hongwei.quhw Exp $
2727
*/
2828
public class RdfFileUtil {
29-
private static final String EMPTY = "";
29+
public static final String EMPTY = "";
3030

3131
private static final int BUF_SIZE = 8192;
3232

3333
private static final String AMPERSAND = "&";
3434

3535
private static final String EQUALS = "=";
3636

37-
private static final String QUESTION = "?";
37+
public static final String QUESTION = "?";
3838

3939
public static String trimNotNull(String text) {
4040
if (null == text) {
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
/**
2+
* Alipay.com Inc.
3+
* Copyright (c) 2004-2020 All Rights Reserved.
4+
*/
5+
package com.alipay.rdf.file.loader;
6+
7+
import com.alipay.rdf.file.model.FileDefaultConfig;
8+
import com.alipay.rdf.file.model.StorageConfig;
9+
import com.alipay.rdf.file.resource.TestResource;
10+
import com.alipay.rdf.file.spi.RdfFileResourceSpi;
11+
import org.junit.Assert;
12+
import org.junit.Test;
13+
14+
import java.lang.reflect.Field;
15+
import java.util.Map;
16+
17+
import static com.alipay.rdf.file.loader.ResourceLoader.getInputStream;
18+
19+
/**
20+
* Copyright (C) 2013-2018 Ant Financial Services Group
21+
*
22+
* @author quhongwei
23+
* @version : ResourceLoaderTest.java, v 0.1 2020年11月01日 09:19 quhongwei Exp $
24+
*/
25+
public class ResourceLoaderTest {
26+
27+
@Test
28+
public void testGetInputStreamResourceKey() throws Exception{
29+
30+
Field field = ResourceLoader.class.getDeclaredField("RESOURCE_CACHE");
31+
field.setAccessible(true);
32+
33+
Map<String, RdfFileResourceSpi> resourceMap = ( Map<String, RdfFileResourceSpi>)field.get(null);
34+
Assert.assertTrue(resourceMap.isEmpty());
35+
36+
getInputStream("aa/bb/cc/dd.json");
37+
Assert.assertEquals(1, resourceMap.size());
38+
Assert.assertNotNull(resourceMap.get("classpath"));
39+
40+
getInputStream("classpath:aa/bb/cc/dd.json");
41+
Assert.assertEquals(1, resourceMap.size());
42+
Assert.assertNotNull(resourceMap.get("classpath"));
43+
44+
getInputStream("classpath:aa/bb/cc/dd.json?resourceKey=hzconfig");
45+
Assert.assertEquals(2, resourceMap.size());
46+
Assert.assertNotNull(resourceMap.get("classpath"));
47+
Assert.assertNotNull(resourceMap.get("classpathhzconfig"));
48+
49+
getInputStream("classpath:aa/bb/cc/dd.json?resourceKey=shconfig");
50+
Assert.assertEquals(3, resourceMap.size());
51+
Assert.assertNotNull(resourceMap.get("classpath"));
52+
Assert.assertNotNull(resourceMap.get("classpathshconfig"));
53+
54+
getInputStream("classpath:aa/bb/cc/dd.json?resourceKey=shconfig&xx=dd");
55+
Assert.assertEquals(3, resourceMap.size());
56+
Assert.assertNotNull(resourceMap.get("classpath"));
57+
Assert.assertNotNull(resourceMap.get("classpathhzconfig"));
58+
Assert.assertNotNull(resourceMap.get("classpathshconfig"));
59+
60+
61+
TestResource.TestInputStream testInputStream = (TestResource.TestInputStream)ResourceLoader.getInputStream("testResource:aa/bb/cc/dd.json");
62+
63+
Assert.assertEquals(4, resourceMap.size());
64+
Assert.assertNotNull(resourceMap.get("classpath"));
65+
Assert.assertNotNull(resourceMap.get("classpathhzconfig"));
66+
Assert.assertNotNull(resourceMap.get("classpathshconfig"));
67+
Assert.assertNotNull(resourceMap.get("testResource"));
68+
69+
Assert.assertEquals("testResource", testInputStream.getResourceType());
70+
Assert.assertEquals("aa/bb/cc/dd.json", testInputStream.getPath());
71+
Assert.assertNull( testInputStream.getConfig());
72+
73+
FileDefaultConfig.DEFAULT_FILE_PARAMS.put("key1", new StorageConfig("nas") {
74+
{
75+
addParam("type", "key1");
76+
}
77+
});
78+
79+
FileDefaultConfig.DEFAULT_FILE_PARAMS.put("key2", new StorageConfig("nas") {
80+
{
81+
addParam("type", "key2");
82+
}
83+
});
84+
85+
testInputStream = (TestResource.TestInputStream)ResourceLoader.getInputStream("testResource:aa/bb/cc/dd.json?resourceKey=key1");
86+
Assert.assertEquals(5, resourceMap.size());
87+
Assert.assertNotNull(resourceMap.get("classpath"));
88+
Assert.assertNotNull(resourceMap.get("classpathhzconfig"));
89+
Assert.assertNotNull(resourceMap.get("classpathshconfig"));
90+
Assert.assertNotNull(resourceMap.get("testResource"));
91+
Assert.assertNotNull(resourceMap.get("testResourcekey1"));
92+
93+
// 重复看看缓存
94+
testInputStream = (TestResource.TestInputStream)ResourceLoader.getInputStream("testResource:aa/bb/cc/dd.json?resourceKey=key1");
95+
Assert.assertEquals(5, resourceMap.size());
96+
Assert.assertNotNull(resourceMap.get("classpath"));
97+
Assert.assertNotNull(resourceMap.get("classpathhzconfig"));
98+
Assert.assertNotNull(resourceMap.get("classpathshconfig"));
99+
Assert.assertNotNull(resourceMap.get("testResource"));
100+
Assert.assertNotNull(resourceMap.get("testResourcekey1"));
101+
Assert.assertEquals("key1", testInputStream.getConfig().getParam("type"));
102+
103+
testInputStream = (TestResource.TestInputStream)ResourceLoader.getInputStream("testResource:aa/bb/cc/dd.json?resourceKey=key2");
104+
Assert.assertEquals(6, resourceMap.size());
105+
Assert.assertNotNull(resourceMap.get("classpath"));
106+
Assert.assertNotNull(resourceMap.get("classpathhzconfig"));
107+
Assert.assertNotNull(resourceMap.get("classpathshconfig"));
108+
Assert.assertNotNull(resourceMap.get("testResource"));
109+
Assert.assertNotNull(resourceMap.get("testResourcekey1"));
110+
Assert.assertNotNull(resourceMap.get("testResourcekey2"));
111+
Assert.assertEquals("key2", testInputStream.getConfig().getParam("type"));
112+
}
113+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/**
2+
* Alipay.com Inc.
3+
* Copyright (c) 2004-2020 All Rights Reserved.
4+
*/
5+
package com.alipay.rdf.file.resource;
6+
7+
import com.alipay.rdf.file.model.StorageConfig;
8+
import com.alipay.rdf.file.spi.RdfFileResourceSpi;
9+
10+
import java.io.IOException;
11+
import java.io.InputStream;
12+
13+
/**
14+
* Copyright (C) 2013-2018 Ant Financial Services Group
15+
*
16+
* @author quhongwei
17+
* @version : TestResource.java, v 0.1 2020年11月01日 09:48 quhongwei Exp $
18+
*/
19+
public class TestResource extends AbstractRdfResources {
20+
@Override
21+
public RdfInputStream getInputStream(String path) {
22+
return new TestInputStream(storageConfig, resourceType, path);
23+
}
24+
25+
public static class TestInputStream extends RdfInputStream {
26+
private final StorageConfig config;
27+
private final String resourceType;
28+
private final String path;
29+
30+
public TestInputStream(StorageConfig config, String resourceType, String path) {
31+
super(new InputStream() {
32+
@Override
33+
public int read() throws IOException {
34+
return 0;
35+
}
36+
});
37+
this.config = config;
38+
this.resourceType = resourceType;
39+
this.path = path;
40+
}
41+
42+
public StorageConfig getConfig() {
43+
return config;
44+
}
45+
46+
public String getResourceType() {
47+
return resourceType;
48+
}
49+
50+
public String getPath() {
51+
return path;
52+
}
53+
}
54+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
testResource=com.alipay.rdf.file.resource.TestResource

0 commit comments

Comments
 (0)