Skip to content
This repository has been archived by the owner on Sep 2, 2022. It is now read-only.

Commit

Permalink
Make string, stream parsers support classpath includes
Browse files Browse the repository at this point in the history
Previously they didn't support any kind of include.
  • Loading branch information
havocp committed Apr 9, 2012
1 parent 3866139 commit 05c60ea
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 9 deletions.
18 changes: 9 additions & 9 deletions config/src/main/java/com/typesafe/config/impl/Parseable.java
Expand Up @@ -97,7 +97,14 @@ ConfigSyntax guessSyntax() {
} }


ConfigParseable relativeTo(String filename) { ConfigParseable relativeTo(String filename) {
return null; // fall back to classpath; we treat the "filename" as absolute
// (don't add a package name in front),
// if it starts with "/" then remove the "/", for consistency
// with ParseableResources.relativeTo
String resource = filename;
if (filename.startsWith("/"))
resource = filename.substring(1);
return newResources(resource, options().setOriginDescription(null));
} }


ConfigIncludeContext includeContext() { ConfigIncludeContext includeContext() {
Expand Down Expand Up @@ -434,14 +441,7 @@ ConfigParseable relativeTo(String filename) {
if (sibling.exists()) { if (sibling.exists()) {
return newFile(sibling, options().setOriginDescription(null)); return newFile(sibling, options().setOriginDescription(null));
} else { } else {
// fall back to classpath; we treat the "filename" as absolute return super.relativeTo(filename);
// (don't add a package name in front),
// if it starts with "/" then remove the "/", for consistency
// with ParseableResources.relativeTo
String resource = filename;
if (filename.startsWith("/"))
resource = filename.substring(1);
return newResources(resource, options().setOriginDescription(null));
} }
} }


Expand Down
Expand Up @@ -329,6 +329,14 @@ class PublicApiTest extends TestUtils {
included.map(_.name)) included.map(_.name))
} }


@Test
def includersAreUsedRecursivelyWithString() {
val included = whatWasIncluded(ConfigFactory.parseString(""" include "equiv03/includes.conf" """, _))

assertEquals(List("equiv03/includes.conf", "letters/a.conf", "numbers/1.conf", "numbers/2", "letters/b.json", "letters/c", "root/foo.conf"),
included.map(_.name))
}

@Test @Test
def includersAreUsedWithClasspath() { def includersAreUsedWithClasspath() {
val included = whatWasIncluded(ConfigFactory.parseResources(classOf[PublicApiTest], "/test03.conf", _)) val included = whatWasIncluded(ConfigFactory.parseResources(classOf[PublicApiTest], "/test03.conf", _))
Expand Down

0 comments on commit 05c60ea

Please sign in to comment.