killbill-uncached
Changes
catalog/pom.xml 2(+1 -1)
Details
catalog/pom.xml 2(+1 -1)
diff --git a/catalog/pom.xml b/catalog/pom.xml
index a327ddd..cd42fb4 100644
--- a/catalog/pom.xml
+++ b/catalog/pom.xml
@@ -49,7 +49,7 @@
<configuration>
<mainClass>com.ning.billing.catalog.io.XMLSchemaGenerator</mainClass>
<arguments>
- <argument>${project.basedir}/src/main/resources</argument>
+ <argument>${project.basedir}/src/test/resources</argument>
</arguments>
</configuration>
</execution>
diff --git a/catalog/src/main/java/com/ning/billing/catalog/Case.java b/catalog/src/main/java/com/ning/billing/catalog/Case.java
index a26c4ba..2d92df0 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/Case.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/Case.java
@@ -20,9 +20,6 @@ import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlIDREF;
import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.PhaseType;
-import com.ning.billing.catalog.api.PlanAlignmentChange;
-import com.ning.billing.catalog.api.PlanPhaseSpecifier;
import com.ning.billing.catalog.api.PlanSpecifier;
import com.ning.billing.catalog.api.ProductCategory;
diff --git a/catalog/src/main/java/com/ning/billing/catalog/CaseCreateAlignment.java b/catalog/src/main/java/com/ning/billing/catalog/CaseCreateAlignment.java
index 3a1ba1f..69a64ca 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/CaseCreateAlignment.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/CaseCreateAlignment.java
@@ -19,7 +19,6 @@ package com.ning.billing.catalog;
import javax.xml.bind.annotation.XmlElement;
import com.ning.billing.catalog.api.BillingPeriod;
-import com.ning.billing.catalog.api.PhaseType;
import com.ning.billing.catalog.api.PlanAlignmentCreate;
import com.ning.billing.catalog.api.ProductCategory;
diff --git a/catalog/src/main/java/com/ning/billing/catalog/io/ICatalogLoader.java b/catalog/src/main/java/com/ning/billing/catalog/io/ICatalogLoader.java
index 426f7c6..f9163e2 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/io/ICatalogLoader.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/io/ICatalogLoader.java
@@ -20,6 +20,7 @@ import java.io.IOException;
import java.net.URL;
import javax.xml.bind.JAXBException;
+import javax.xml.transform.TransformerException;
import org.xml.sax.SAXException;
@@ -29,6 +30,6 @@ import com.ning.billing.catalog.api.InvalidConfigException;
public interface ICatalogLoader {
public abstract VersionedCatalog load(URL url) throws IOException,
- SAXException, InvalidConfigException, JAXBException;
+ SAXException, InvalidConfigException, JAXBException, TransformerException;
}
\ No newline at end of file
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 59bffa3..fcda9d7 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
@@ -26,6 +26,7 @@ import java.util.List;
import java.util.Scanner;
import javax.xml.bind.JAXBException;
+import javax.xml.transform.TransformerException;
import org.xml.sax.SAXException;
@@ -43,7 +44,7 @@ public class VersionedCatalogLoader implements ICatalogLoader {
* @see com.ning.billing.catalog.io.ICatalogLoader#load(java.net.URL)
*/
@Override
- public VersionedCatalog load(URL url) throws IOException, SAXException, InvalidConfigException, JAXBException {
+ public VersionedCatalog load(URL url) throws IOException, SAXException, InvalidConfigException, JAXBException, TransformerException {
String directoryContents = pullContentsFrom(url);
List<URL> xmlURLs = findXmlReferences(directoryContents, url);
VersionedCatalog result = new VersionedCatalog();
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 c0e5b2e..2a82a71 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
@@ -16,14 +16,14 @@
package com.ning.billing.catalog.io;
-import java.io.InputStream;
+import java.io.IOException;
import java.net.URL;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
-import javax.xml.transform.stream.StreamSource;
+import javax.xml.transform.TransformerException;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
@@ -38,20 +38,14 @@ import com.ning.billing.catalog.api.InvalidConfigException;
public class XMLReader {
public static Logger log = LoggerFactory.getLogger(XMLReader.class);
- public static Catalog getCatalogFromName(URL url) throws SAXException, InvalidConfigException, JAXBException {
+ public static Catalog getCatalogFromName(URL url) throws SAXException, InvalidConfigException, JAXBException, IOException, TransformerException {
JAXBContext context =JAXBContext.newInstance(Catalog.class);
- InputStream resourceStream = XMLReader.class.getResourceAsStream("/CatalogSchema.xsd");
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI );
Unmarshaller um = context.createUnmarshaller();
-
- if(resourceStream == null) {
- log.error("Can't find XML Schema resource to validate content - if you are seeing " +
- "this as part of the release build process its OK to ignore, otherwie it needs attention");
- } else {
- Schema schema = factory.newSchema(new StreamSource(resourceStream));
- um.setSchema(schema);
- }
+
+ Schema schema = factory.newSchema(XMLSchemaGenerator.xmlSchema());
+ um.setSchema(schema);
Object o = um.unmarshal(url);
diff --git a/catalog/src/main/java/com/ning/billing/catalog/io/XMLSchemaGenerator.java b/catalog/src/main/java/com/ning/billing/catalog/io/XMLSchemaGenerator.java
index 3ad88fc..db61c1b 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/io/XMLSchemaGenerator.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/io/XMLSchemaGenerator.java
@@ -16,6 +16,8 @@
package com.ning.billing.catalog.io;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
@@ -33,12 +35,14 @@ import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
import org.w3c.dom.Document;
import com.ning.billing.catalog.Catalog;
public class XMLSchemaGenerator {
+ final private static int MAX_SCHEMA_SIZE_IN_BYTES = 100000;
//Note: this main method is called by the maven build to generate the schema for the jar
public static void main(String[] args) throws IOException, TransformerException, JAXBException {
@@ -51,6 +55,13 @@ public class XMLSchemaGenerator {
pojoToXSD(context, s);
}
+ public static StreamSource xmlSchema() throws IOException, TransformerException, JAXBException {
+ ByteArrayOutputStream output = new ByteArrayOutputStream(MAX_SCHEMA_SIZE_IN_BYTES);
+ JAXBContext context =JAXBContext.newInstance(Catalog.class);
+ pojoToXSD(context, output);
+ StreamSource source = new StreamSource(new ByteArrayInputStream(output.toByteArray()));
+ return source;
+ }
public static void pojoToXSD(JAXBContext context, OutputStream out)
throws IOException, TransformerException
diff --git a/catalog/src/main/java/com/ning/billing/catalog/Plan.java b/catalog/src/main/java/com/ning/billing/catalog/Plan.java
index a220cf7..bfdd093 100644
--- a/catalog/src/main/java/com/ning/billing/catalog/Plan.java
+++ b/catalog/src/main/java/com/ning/billing/catalog/Plan.java
@@ -27,7 +27,6 @@ import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlID;
import javax.xml.bind.annotation.XmlIDREF;
-import com.ning.billing.catalog.api.BillingAlignment;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.IPlan;
import com.ning.billing.catalog.api.IPlanPhase;
diff --git a/catalog/src/test/java/com/ning/billing/catalog/io/TestVersionedCatalogLoader.java b/catalog/src/test/java/com/ning/billing/catalog/io/TestVersionedCatalogLoader.java
index 46188af..e858b82 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/io/TestVersionedCatalogLoader.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/io/TestVersionedCatalogLoader.java
@@ -18,7 +18,6 @@ package com.ning.billing.catalog.io;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
-import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
@@ -26,12 +25,13 @@ import java.util.Iterator;
import java.util.List;
import javax.xml.bind.JAXBException;
+import javax.xml.transform.TransformerException;
-import com.google.common.io.Resources;
import org.joda.time.DateTime;
import org.testng.annotations.Test;
import org.xml.sax.SAXException;
+import com.google.common.io.Resources;
import com.ning.billing.catalog.Catalog;
import com.ning.billing.catalog.VersionedCatalog;
import com.ning.billing.catalog.api.InvalidConfigException;
@@ -126,7 +126,7 @@ public class TestVersionedCatalogLoader {
}
@Test(enabled=true)
- public void testLoad() throws MalformedURLException, IOException, SAXException, InvalidConfigException, JAXBException {
+ public void testLoad() throws MalformedURLException, IOException, SAXException, InvalidConfigException, JAXBException, TransformerException {
VersionedCatalog c = loader.load(Resources.getResource("versionedCatalog"));
assertEquals(4, c.size());
Iterator<Catalog> it = c.iterator();
diff --git a/catalog/src/test/java/com/ning/billing/catalog/io/TestXMLReader.java b/catalog/src/test/java/com/ning/billing/catalog/io/TestXMLReader.java
index 97dbc3b..1d08c31 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/io/TestXMLReader.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/io/TestXMLReader.java
@@ -16,16 +16,15 @@
package com.ning.billing.catalog.io;
-import java.io.File;
import java.io.IOException;
import javax.xml.bind.JAXBException;
import javax.xml.transform.TransformerException;
-import com.google.common.io.Resources;
import org.testng.annotations.Test;
import org.xml.sax.SAXException;
+import com.google.common.io.Resources;
import com.ning.billing.catalog.api.InvalidConfigException;
public class TestXMLReader {
diff --git a/catalog/src/test/java/com/ning/billing/catalog/TestCaseChange.java b/catalog/src/test/java/com/ning/billing/catalog/TestCaseChange.java
index ed2972d..ed48ccf 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/TestCaseChange.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/TestCaseChange.java
@@ -25,8 +25,8 @@ import org.testng.annotations.Test;
import com.ning.billing.catalog.api.BillingPeriod;
import com.ning.billing.catalog.api.PhaseType;
-import com.ning.billing.catalog.api.PlanPhaseSpecifier;
-import com.ning.billing.catalog.api.PlanSpecifier;
+import com.ning.billing.catalog.api.PlanPhaseSpecifier;
+import com.ning.billing.catalog.api.PlanSpecifier;
import com.ning.billing.catalog.api.ProductCategory;
public class TestCaseChange {
diff --git a/catalog/src/test/java/com/ning/billing/catalog/TestVersionedCatalog.java b/catalog/src/test/java/com/ning/billing/catalog/TestVersionedCatalog.java
index 8a7b07f..ee4d094 100644
--- a/catalog/src/test/java/com/ning/billing/catalog/TestVersionedCatalog.java
+++ b/catalog/src/test/java/com/ning/billing/catalog/TestVersionedCatalog.java
@@ -16,20 +16,19 @@
package com.ning.billing.catalog;
import static org.testng.AssertJUnit.assertEquals;
-import java.io.File;
+
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Date;
import javax.xml.bind.JAXBException;
+import javax.xml.transform.TransformerException;
-import com.google.common.io.Resources;
import org.joda.time.DateTime;
import org.testng.annotations.Test;
import org.xml.sax.SAXException;
-import com.ning.billing.catalog.Catalog;
-import com.ning.billing.catalog.VersionedCatalog;
+import com.google.common.io.Resources;
import com.ning.billing.catalog.api.InvalidConfigException;
import com.ning.billing.catalog.io.ICatalogLoader;
import com.ning.billing.catalog.io.VersionedCatalogLoader;
@@ -38,14 +37,14 @@ public class TestVersionedCatalog {
private final ICatalogLoader loader = new VersionedCatalogLoader();
@Test(enabled=true)
- public void testAddCatalog() throws MalformedURLException, IOException, SAXException, InvalidConfigException, JAXBException {
+ public void testAddCatalog() throws MalformedURLException, IOException, SAXException, InvalidConfigException, JAXBException, TransformerException {
VersionedCatalog vc = loader.load(Resources.getResource("versionedCatalog"));
vc.add(new Catalog(new Date()));
assertEquals(5, vc.size());
}
@Test(enabled=true)
- public void testApplyEffectiveDate() throws MalformedURLException, IOException, SAXException, InvalidConfigException, JAXBException {
+ public void testApplyEffectiveDate() throws MalformedURLException, IOException, SAXException, InvalidConfigException, JAXBException, TransformerException {
VersionedCatalog vc = loader.load(Resources.getResource("versionedCatalog"));
Date d = new Date(1L);
vc.configureEffectiveDate(d);