diff --git a/catalog/src/main/java/com/ning/billing/catalog/CatalogService.java b/catalog/src/main/java/com/ning/billing/catalog/CatalogService.java
index f1d01c8..b511c24 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/CatalogService.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/CatalogService.java
@@ -20,6 +20,7 @@ import com.google.inject.Inject;
import com.google.inject.Provider;
import com.ning.billing.catalog.api.ICatalog;
import com.ning.billing.catalog.api.ICatalogService;
+import com.ning.billing.catalog.io.VersionedCatalogLoader;
import com.ning.billing.config.ICatalogConfig;
import com.ning.billing.lifecycle.IService;
import com.ning.billing.lifecycle.LyfecycleHandlerType;
@@ -35,19 +36,24 @@ public class CatalogService implements IService, Provider<ICatalog>, ICatalogSer
private final ICatalogConfig config;
private boolean isInitialized;
+ private VersionedCatalogLoader loader;
+
@Inject
- public CatalogService(ICatalogConfig config) {
+ public CatalogService(ICatalogConfig config, VersionedCatalogLoader loader) {
this.config = config;
System.out.println(config.getCatalogURI());
this.isInitialized = false;
+ this.loader = loader;
}
@LyfecycleHandlerType(LyfecycleLevel.LOAD_CATALOG)
public synchronized void loadCatalog() throws ServiceException {
if (!isInitialized) {
try {
- catalog = XMLLoader.getObjectFromProperty(config.getCatalogURI(), Catalog.class);
+ catalog = loader.load(config.getCatalogURI());
+
+ //catalog = XMLLoader.getObjectFromProperty(config.getCatalogURI(), Catalog.class);
isInitialized = true;
} catch (Exception e) {
throw new ServiceException(e);
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 9bc2314..59796be 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
@@ -34,6 +34,7 @@ import org.xml.sax.SAXException;
import com.ning.billing.catalog.Catalog;
import com.ning.billing.catalog.VersionedCatalog;
import com.ning.billing.catalog.api.InvalidConfigException;
+import com.ning.billing.lifecycle.IService.ServiceException;
import com.ning.billing.util.config.XMLLoader;
public class VersionedCatalogLoader {
@@ -42,9 +43,15 @@ public class VersionedCatalogLoader {
private final String HREF_CAPS_START = "HREF=\"";
private final String HREF_SEARCH_END = "\"";
- /* (non-Javadoc)
- * @see com.ning.billing.catalog.io.ICatalogLoader#load(java.net.URL)
- */
+
+ public VersionedCatalog load(String urlString) throws ServiceException{
+ try {
+ return load(new URL(urlString));
+ } catch (Exception e) {
+ throw new ServiceException("Problem encountered loading catalog", e);
+ }
+ }
+
public VersionedCatalog load(URL url) throws IOException, SAXException, InvalidConfigException, JAXBException, TransformerException, URISyntaxException {
String directoryContents = pullContentsFrom(url);
List<URL> xmlURLs = findXmlReferences(directoryContents, url);