Details
diff --git a/catalog/src/main/java/com/ning/billing/catalog/Catalog.java b/catalog/src/main/java/com/ning/billing/catalog/Catalog.java
index c66b411..d96aee8 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/Catalog.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/Catalog.java
@@ -53,7 +53,7 @@ public class Catalog extends ValidatingConfig implements ICatalog {
@XmlElement(required=true)
private String catalogName;
- private URL catalogURL;
+ private String catalogURL;
@XmlElementWrapper(name="currencies", required=true)
@XmlElement(name="currency", required=true)
@@ -274,11 +274,11 @@ public class Catalog extends ValidatingConfig implements ICatalog {
this.effectiveDate = effectiveDate;
}
- public URL getCatalogURL() {
+ public String getCatalogURL() {
return catalogURL;
}
- public void setCatalogURL(URL catalogURL) {
+ public void setCatalogURL(String catalogURL) {
this.catalogURL = catalogURL;
}
diff --git a/catalog/src/main/java/com/ning/billing/catalog/io/XMLReader.java b/catalog/src/main/java/com/ning/billing/catalog/io/XMLReader.java
index 2a82a71..d36f4c4 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/io/XMLReader.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/io/XMLReader.java
@@ -17,6 +17,7 @@
package com.ning.billing.catalog.io;
import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
import javax.xml.XMLConstants;
@@ -39,26 +40,44 @@ public class XMLReader {
public static Logger log = LoggerFactory.getLogger(XMLReader.class);
public static Catalog getCatalogFromName(URL url) throws SAXException, InvalidConfigException, JAXBException, IOException, TransformerException {
- JAXBContext context =JAXBContext.newInstance(Catalog.class);
-
- SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI );
- Unmarshaller um = context.createUnmarshaller();
-
- Schema schema = factory.newSchema(XMLSchemaGenerator.xmlSchema());
- um.setSchema(schema);
-
- Object o = um.unmarshal(url);
-
+ Object o = unmarshaller().unmarshal(url);
if(o instanceof Catalog) {
Catalog c = (Catalog)o;
- c.setCatalogURL(url);
- c.initialize(c);
- ValidationErrors errs = c.validate();
- System.out.println("Errors: " + errs.size() + " for " + url);
+ c.setCatalogURL(url.toString());
return (Catalog) o;
} else {
return null;
}
}
+
+ public static Catalog getCatalogFromName(InputStream stream) throws SAXException, InvalidConfigException, JAXBException, IOException, TransformerException {
+ Object o = unmarshaller().unmarshal(stream);
+ if(o instanceof Catalog) {
+ Catalog c = (Catalog)o;
+ c.setCatalogURL("embedded catalog");
+ return (Catalog) o;
+ } else {
+ return null;
+ }
+ }
+
+
+ public static void validate(Catalog c) {
+ c.initialize(c);
+ ValidationErrors errs = c.validate();
+ System.out.println("Errors: " + errs.size() + " for " + c.getCatalogURL());
+ }
+
+ public static Unmarshaller unmarshaller() throws JAXBException, SAXException, IOException, TransformerException {
+ JAXBContext context =JAXBContext.newInstance(Catalog.class);
+
+ SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI );
+ Unmarshaller um = context.createUnmarshaller();
+
+ Schema schema = factory.newSchema(XMLSchemaGenerator.xmlSchema());
+ um.setSchema(schema);
+
+ return um;
+ }
}
diff --git a/catalog/src/main/java/com/ning/billing/catalog/ValidatingConfig.java b/catalog/src/main/java/com/ning/billing/catalog/ValidatingConfig.java
index 532a063..5a8c3e4 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/ValidatingConfig.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/ValidatingConfig.java
@@ -27,7 +27,7 @@ public abstract class ValidatingConfig {
public static class ValidationErrors extends ArrayList<ValidationError>{
private static final long serialVersionUID = 1L;
- public void add(String description, URL catalogURL,
+ public void add(String description, String catalogURL,
Class<? extends ValidatingConfig> objectType, String objectName) {
add(new ValidationError(description, catalogURL, objectType, objectName));
diff --git a/catalog/src/main/java/com/ning/billing/catalog/ValidationError.java b/catalog/src/main/java/com/ning/billing/catalog/ValidationError.java
index 6498307..084d5bd 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/ValidationError.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/ValidationError.java
@@ -19,10 +19,10 @@ import java.net.URL;
public class ValidationError {
private final String description;
- private final URL catalogURL;
+ private final String catalogURL;
private final Class<? extends ValidatingConfig> objectType;
private final String objectName;
- public ValidationError(String description, URL catalogURL,
+ public ValidationError(String description, String catalogURL,
Class<? extends ValidatingConfig> objectType, String objectName) {
super();
this.description = description;
@@ -33,7 +33,7 @@ public class ValidationError {
public String getDescription() {
return description;
}
- public URL getCatalogURL() {
+ public String getCatalogURL() {
return catalogURL;
}
public Class<? extends ValidatingConfig> getObjectType() {