killbill-memoizeit
Changes
beatrix/pom.xml 6(+6 -0)
catalog/src/test/resources/catalogTest.xml 676(+338 -338)
server/pom.xml 6(+6 -0)
Details
beatrix/pom.xml 6(+6 -0)
diff --git a/beatrix/pom.xml b/beatrix/pom.xml
index 2eaacdd..bb704d7 100644
--- a/beatrix/pom.xml
+++ b/beatrix/pom.xml
@@ -88,6 +88,12 @@
</dependency>
<dependency>
<groupId>org.kill-bill.billing</groupId>
+ <artifactId>killbill-catalog</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.kill-bill.billing</groupId>
<artifactId>killbill-currency</artifactId>
</dependency>
<dependency>
diff --git a/beatrix/src/test/resources/beatrix.properties b/beatrix/src/test/resources/beatrix.properties
index 90f9f65..acc60b4 100644
--- a/beatrix/src/test/resources/beatrix.properties
+++ b/beatrix/src/test/resources/beatrix.properties
@@ -1,3 +1,3 @@
-org.killbill.catalog.uri=file:src/test/resources/catalogTest.xml
+org.killbill.catalog.uri=catalogTest.xml
org.killbill.payment.retry.days=8,8,8,8,8,8,8,8
org.killbill.osgi.bundle.install.dir=/var/tmp/beatrix-bundles
diff --git a/catalog/src/test/java/org/killbill/billing/catalog/io/TestXMLReader.java b/catalog/src/test/java/org/killbill/billing/catalog/io/TestXMLReader.java
index 3987355..64cccf7 100644
--- a/catalog/src/test/java/org/killbill/billing/catalog/io/TestXMLReader.java
+++ b/catalog/src/test/java/org/killbill/billing/catalog/io/TestXMLReader.java
@@ -47,6 +47,9 @@ public class TestXMLReader extends CatalogTestSuiteNoDB {
XMLLoader.getObjectFromString(Resources.getResource("SpyCarAdvanced.xml").toExternalForm(), StandaloneCatalog.class);
XMLLoader.getObjectFromString(Resources.getResource("WeaponsHire.xml").toExternalForm(), StandaloneCatalog.class);
XMLLoader.getObjectFromString(Resources.getResource("WeaponsHireSmall.xml").toExternalForm(), StandaloneCatalog.class);
+
+ XMLLoader.getObjectFromString(Resources.getResource("catalogTest.xml").toExternalForm(), StandaloneCatalog.class);
+
XMLLoader.getObjectFromString(Resources.getResource("UsageExperimental.xml").toExternalForm(), StandaloneCatalog.class);
} catch (Exception e) {
Assert.fail(e.toString());
diff --git a/entitlement/src/test/resources/entitlement.properties b/entitlement/src/test/resources/entitlement.properties
index 6fc7e6d..46a797b 100644
--- a/entitlement/src/test/resources/entitlement.properties
+++ b/entitlement/src/test/resources/entitlement.properties
@@ -1 +1 @@
-org.killbill.catalog.uri=file:src/test/resources/catalogTest.xml
+org.killbill.catalog.uri=catalogTest.xml
diff --git a/junction/src/test/resources/junction.properties b/junction/src/test/resources/junction.properties
index 6fc7e6d..46a797b 100644
--- a/junction/src/test/resources/junction.properties
+++ b/junction/src/test/resources/junction.properties
@@ -1 +1 @@
-org.killbill.catalog.uri=file:src/test/resources/catalogTest.xml
+org.killbill.catalog.uri=catalogTest.xml
server/pom.xml 6(+6 -0)
diff --git a/server/pom.xml b/server/pom.xml
index 7828183..74c6e91 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -190,6 +190,12 @@
</dependency>
<dependency>
<groupId>org.kill-bill.billing</groupId>
+ <artifactId>killbill-catalog</artifactId>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.kill-bill.billing</groupId>
<artifactId>killbill-client-java</artifactId>
</dependency>
<dependency>
diff --git a/server/src/test/resources/killbill.properties b/server/src/test/resources/killbill.properties
index 1949e5a..1b1e335 100644
--- a/server/src/test/resources/killbill.properties
+++ b/server/src/test/resources/killbill.properties
@@ -14,7 +14,7 @@
# under the License.
#
-org.killbill.catalog.uri=file:src/test/resources/catalogTest.xml
+org.killbill.catalog.uri=catalogTest.xml
org.killbill.overdue.uri=overdue.xml
org.killbill.payment.retry.days=8,8,8
diff --git a/subscription/src/test/resources/subscription.properties b/subscription/src/test/resources/subscription.properties
index 6fc7e6d..46a797b 100644
--- a/subscription/src/test/resources/subscription.properties
+++ b/subscription/src/test/resources/subscription.properties
@@ -1 +1 @@
-org.killbill.catalog.uri=file:src/test/resources/catalogTest.xml
+org.killbill.catalog.uri=catalogTest.xml
diff --git a/util/src/main/java/org/killbill/billing/util/config/catalog/UriAccessor.java b/util/src/main/java/org/killbill/billing/util/config/catalog/UriAccessor.java
index 5b200a3..3b74562 100644
--- a/util/src/main/java/org/killbill/billing/util/config/catalog/UriAccessor.java
+++ b/util/src/main/java/org/killbill/billing/util/config/catalog/UriAccessor.java
@@ -23,11 +23,14 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Scanner;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
import com.google.common.io.Resources;
public class UriAccessor {
+ private static final String URI_SCHEME_FOR_ARCHIVE_FILE = "jar:file";
private static final String URI_SCHEME_FOR_CLASSPATH = "jar";
private static final String URI_SCHEME_FOR_FILE = "file";
@@ -42,7 +45,11 @@ public class UriAccessor {
if (scheme == null) {
uri = new URI(Resources.getResource(uri.toString()).toExternalForm());
} else if (scheme.equals(URI_SCHEME_FOR_CLASSPATH)) {
- return UriAccessor.class.getResourceAsStream(uri.getPath());
+ if (uri.toString().startsWith(URI_SCHEME_FOR_ARCHIVE_FILE)) {
+ return getInputStreamFromJarFile(uri.toString());
+ } else {
+ return UriAccessor.class.getResourceAsStream(uri.getPath());
+ }
} else if (scheme.equals(URI_SCHEME_FOR_FILE) &&
!uri.getSchemeSpecificPart().startsWith("/")) { // interpret URIs of this form as relative path uris
uri = new File(uri.getSchemeSpecificPart()).toURI();
@@ -51,6 +58,23 @@ public class UriAccessor {
return url.openConnection().getInputStream();
}
+ /**
+ *
+ * @param classPathFile of the form jar:file:/path!/resource
+ * @return
+ * @throws IOException if fail to extract InputStream
+ */
+ private static InputStream getInputStreamFromJarFile(final String classPathFile) throws IOException {
+
+ final String[] partsPathAndResource = classPathFile.split("!");
+ final String resourceInJar = partsPathAndResource[1].substring(1);
+
+ final String[] partsColumns = partsPathAndResource[0].split(":");
+ final String jarFileName = partsColumns[2];
+
+ return new ZipFile(new File(jarFileName)).getInputStream(new ZipEntry(resourceInJar));
+ }
+
public static String accessUriAsString(final String uri) throws IOException, URISyntaxException {
return accessUriAsString(new URI(uri));
}