1818
1919import com .arangodb .config .HostDescription ;
2020import com .arangodb .tinkerpop .gremlin .AbstractTest ;
21- import com .arangodb .tinkerpop .gremlin .structure .ArangoDBGraph ;
2221import com .arangodb .tinkerpop .gremlin .structure .ArangoDBGraphConfig ;
22+ import org .apache .commons .configuration2 .Configuration ;
23+ import org .apache .commons .configuration2 .ConfigurationUtils ;
24+ import org .apache .commons .configuration2 .FileBasedConfiguration ;
25+ import org .apache .commons .configuration2 .YAMLConfiguration ;
26+ import org .apache .commons .configuration2 .builder .FileBasedConfigurationBuilder ;
27+ import org .apache .commons .configuration2 .builder .fluent .Configurations ;
28+ import org .apache .commons .configuration2 .builder .fluent .Parameters ;
29+ import org .apache .commons .configuration2 .ex .ConfigurationException ;
2330import org .assertj .core .api .InstanceOfAssertFactories ;
2431import org .junit .Test ;
2532
33+ import java .io .File ;
34+
2635import static org .assertj .core .api .Assertions .as ;
2736import static org .assertj .core .api .Assertions .assertThat ;
2837
29- @ SuppressWarnings ("resource" )
3038public class ArangoDBGraphConfigTest extends AbstractTest {
3139
3240 @ Test
3341 public void loadConfigFromFile () {
34- client .clear ("g" );
35- ArangoDBGraph g = createGraph ("src/test/resources/test.yaml" );
36- ArangoDBGraphConfig conf = new ArangoDBGraphConfig (g .configuration ());
42+ ArangoDBGraphConfig conf = new ArangoDBGraphConfig (getConfiguration (new File ("src/test/resources/test.yaml" )));
3743 assertThat (conf .dbName ).isEqualTo (dbName );
3844 assertThat (conf .graphName ).isEqualTo ("g" );
3945 assertThat (conf .graphType ).isEqualTo (ArangoDBGraphConfig .GraphType .COMPLEX );
@@ -60,4 +66,39 @@ public void loadConfigFromFile() {
6066 });
6167 assertThat (conf .driverConfig .getPassword ()).isPresent ().get ().isEqualTo ("test" );
6268 }
69+
70+ private static org .apache .commons .configuration2 .Configuration getConfiguration (final File configurationFile ) {
71+ if (!configurationFile .isFile ())
72+ throw new IllegalArgumentException (String .format ("The location configuration must resolve to a file and [%s] does not" , configurationFile ));
73+
74+ try {
75+ final String fileName = configurationFile .getName ();
76+ final String fileExtension = fileName .substring (fileName .lastIndexOf ('.' ) + 1 );
77+
78+ final Configuration conf ;
79+ final Configurations configs = new Configurations ();
80+
81+ switch (fileExtension ) {
82+ case "yml" :
83+ case "yaml" :
84+ final Parameters params = new Parameters ();
85+ final FileBasedConfigurationBuilder <FileBasedConfiguration > builder =
86+ new FileBasedConfigurationBuilder <FileBasedConfiguration >(YAMLConfiguration .class ).
87+ configure (params .fileBased ().setFile (configurationFile ));
88+
89+ final org .apache .commons .configuration2 .Configuration copy = new org .apache .commons .configuration2 .BaseConfiguration ();
90+ ConfigurationUtils .copy (builder .configure (params .fileBased ().setFile (configurationFile )).getConfiguration (), copy );
91+ conf = copy ;
92+ break ;
93+ case "xml" :
94+ conf = configs .xml (configurationFile );
95+ break ;
96+ default :
97+ conf = configs .properties (configurationFile );
98+ }
99+ return conf ;
100+ } catch (ConfigurationException e ) {
101+ throw new IllegalArgumentException (String .format ("Could not load configuration at: %s" , configurationFile ), e );
102+ }
103+ }
63104}
0 commit comments