killbill-aplcache

catalog: expand the path to the catalog if possible This allows

6/27/2012 4:07:00 PM

Details

diff --git a/catalog/src/main/java/com/ning/billing/catalog/io/VersionedCatalogLoader.java b/catalog/src/main/java/com/ning/billing/catalog/io/VersionedCatalogLoader.java
index 95f5590..4bc57e3 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/io/VersionedCatalogLoader.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/io/VersionedCatalogLoader.java
@@ -22,6 +22,7 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.google.common.io.Resources;
 import com.google.inject.Inject;
 import com.ning.billing.catalog.StandaloneCatalog;
 import com.ning.billing.catalog.VersionedCatalog;
@@ -48,10 +49,23 @@ public class VersionedCatalogLoader implements ICatalogLoader {
         try {
             List<URI> xmlURIs = null;
 
-            if (uriString.endsWith(XML_EXTENSION)) { //assume its an xml file
+            if (uriString.endsWith(XML_EXTENSION)) { // Assume its an xml file
                 xmlURIs = new ArrayList<URI>();
-                xmlURIs.add(new URI(uriString));
-            } else { //assume its a directory
+                URI uri = new URI(uriString);
+
+                // Try to expand the full path, if possible
+                final String schemeSpecificPart = uri.getSchemeSpecificPart();
+                if (schemeSpecificPart != null) {
+                    final String[] split = schemeSpecificPart.split("/");
+                    final String fileName = split[split.length - 1];
+                    try {
+                        uri = new URI(Resources.getResource(fileName).toExternalForm());
+                    } catch (IllegalArgumentException ignored) {
+                    }
+                }
+
+                xmlURIs.add(uri);
+            } else { // Assume its a directory
                 final String directoryContents = UriAccessor.accessUriAsString(uriString);
                 xmlURIs = findXmlReferences(directoryContents, new URL(uriString));
             }
@@ -61,6 +75,7 @@ public class VersionedCatalogLoader implements ICatalogLoader {
                 final StandaloneCatalog catalog = XMLLoader.getObjectFromUri(u, StandaloneCatalog.class);
                 result.add(catalog);
             }
+
             return result;
         } catch (Exception e) {
             throw new ServiceException("Problem encountered loading catalog", e);