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+ }
0 commit comments