use of eu.esdihumboldt.hale.common.core.io.supplier.DefaultInputSupplier in project hale by halestudio.
the class XmlSchemaReaderTest method testRead_shiporder_types_reverse.
/**
* Test reading a simple XML schema that uses several custom named types.
* The types are referenced before they are declared.
*
* @throws Exception if reading the schema fails
*/
@Test
public void testRead_shiporder_types_reverse() throws Exception {
URI location = getClass().getResource("/testdata/shiporder/shiporder-types-r.xsd").toURI();
LocatableInputSupplier<? extends InputStream> input = new DefaultInputSupplier(location);
XmlIndex schema = (XmlIndex) readSchema(input);
String ns = "http://www.example.com";
assertEquals(ns, schema.getNamespace());
// shiporder element
Collection<XmlElement> elements = getElementsWithNS(ns, schema.getElements().values());
assertEquals(1, elements.size());
XmlElement shiporder = elements.iterator().next();
testShiporderStructure(shiporder, ns);
}
use of eu.esdihumboldt.hale.common.core.io.supplier.DefaultInputSupplier in project hale by halestudio.
the class XmlSchemaReaderTest method testRead_shiporder_one.
/**
* Test reading a simple XML schema that contains one big element. Focuses
* on structure, simple type bindings and cardinalities.
*
* @throws Exception if reading the schema fails
*/
@Test
public void testRead_shiporder_one() throws Exception {
URI location = getClass().getResource("/testdata/shiporder/shiporder-one.xsd").toURI();
LocatableInputSupplier<? extends InputStream> input = new DefaultInputSupplier(location);
XmlIndex schema = (XmlIndex) readSchema(input);
String ns = "http://www.example.com";
assertEquals(ns, schema.getNamespace());
// shiporder element
Collection<XmlElement> elements = getElementsWithNS(ns, schema.getElements().values());
assertEquals(1, elements.size());
XmlElement shiporder = elements.iterator().next();
testShiporderStructure(shiporder, ns);
}
use of eu.esdihumboldt.hale.common.core.io.supplier.DefaultInputSupplier in project hale by halestudio.
the class XmlSchemaReaderTest method testRead_definitive_chapter03.
/**
* Test reading a simple XML schema that is split into several files. Tests
* also the {@link XmlElements} and {@link MappingRelevantFlag} constraints
*
* @throws Exception if reading the schema fails
*/
@Test
public void testRead_definitive_chapter03() throws Exception {
URI location = getClass().getResource("/testdata/definitive/chapter03env.xsd").toURI();
LocatableInputSupplier<? extends InputStream> input = new DefaultInputSupplier(location);
XmlIndex schema = (XmlIndex) readSchema(input);
// envelope element
XmlElement envelope = schema.getElements().get(new QName("http://example.org/ord", "envelope"));
assertNotNull(envelope);
TypeDefinition envType = envelope.getType();
// mappable
assertTrue(envType.getConstraint(MappingRelevantFlag.class).isEnabled());
// XmlElements
Collection<? extends XmlElement> elements = envType.getConstraint(XmlElements.class).getElements();
assertEquals(1, elements.size());
assertEquals(envelope, elements.iterator().next());
// order
PropertyDefinition order = envType.getChild(new QName("http://example.org/ord", "order")).asProperty();
assertNotNull(order);
TypeDefinition orderType = order.getPropertyType();
// mappable
assertTrue(orderType.getConstraint(MappingRelevantFlag.class).isEnabled());
// number
PropertyDefinition number = orderType.getChild(new QName("http://example.org/ord", "number")).asProperty();
assertNotNull(number);
// binding must be string
assertEquals(String.class, number.getPropertyType().getConstraint(Binding.class).getBinding());
// items
PropertyDefinition items = orderType.getChild(new QName("http://example.org/ord", "items")).asProperty();
assertNotNull(items);
// not mappable
assertFalse(items.getPropertyType().getConstraint(MappingRelevantFlag.class).isEnabled());
// no elements
assertTrue(items.getPropertyType().getConstraint(XmlElements.class).getElements().isEmpty());
// SpecialOrderType
// extension to OrderType, should be mappable using xsi:type
TypeDefinition specialOrderType = schema.getType(new QName("http://example.org/ord", "SpecialOrderType"));
assertNotNull(specialOrderType);
// number of declared children
assertEquals(1, specialOrderType.getDeclaredChildren().size());
// number of children
assertEquals(3, specialOrderType.getChildren().size());
// mappable
assertTrue(specialOrderType.getConstraint(MappableFlag.class).isEnabled());
// no elements
assertTrue(specialOrderType.getConstraint(XmlElements.class).getElements().isEmpty());
// overall mappable types
Collection<? extends TypeDefinition> mt = schema.getMappingRelevantTypes();
// envelope, order, special order
assertEquals(2, mt.size());
}
use of eu.esdihumboldt.hale.common.core.io.supplier.DefaultInputSupplier in project hale by halestudio.
the class XmlSchemaReaderTest method testRead_definitive_choice.
/**
* Test reading a simple XML schema with choices and complex types.
*
* @throws Exception if reading the schema fails
*/
@Test
public void testRead_definitive_choice() throws Exception {
URI location = getClass().getResource("/testdata/definitive/choice_complex.xsd").toURI();
LocatableInputSupplier<? extends InputStream> input = new DefaultInputSupplier(location);
XmlIndex schema = (XmlIndex) readSchema(input);
// ItemsType
TypeDefinition itemsType = schema.getType(new QName("ItemsType"));
assertNotNull(itemsType);
Collection<? extends ChildDefinition<?>> children = itemsType.getChildren();
assertEquals(1, children.size());
// choice
GroupPropertyDefinition choice = children.iterator().next().asGroup();
assertNotNull(choice);
// cardinality
Cardinality cc = choice.getConstraint(Cardinality.class);
assertEquals(0, cc.getMinOccurs());
assertEquals(Cardinality.UNBOUNDED, cc.getMaxOccurs());
// choice flag
assertTrue(choice.getConstraint(ChoiceFlag.class).isEnabled());
// children
assertEquals(3, choice.getDeclaredChildren().size());
// shirt
PropertyDefinition shirt = choice.getChild(new QName("shirt")).asProperty();
assertNotNull(shirt);
// hat
PropertyDefinition hat = choice.getChild(new QName("hat")).asProperty();
assertNotNull(hat);
// umbrella
PropertyDefinition umbrella = choice.getChild(new QName("umbrella")).asProperty();
assertNotNull(umbrella);
// TODO extend with advanced complex type tests?
}
use of eu.esdihumboldt.hale.common.core.io.supplier.DefaultInputSupplier in project hale by halestudio.
the class XmlSchemaReaderTest method testRead_shiporder_types_cycle.
/**
* Test reading a simple XML schema that uses several custom named types and
* has a cycle.
*
* @throws Exception if reading the schema fails
*/
@Test
public void testRead_shiporder_types_cycle() throws Exception {
URI location = getClass().getResource("/testdata/shiporder/shiporder-types-cycle.xsd").toURI();
LocatableInputSupplier<? extends InputStream> input = new DefaultInputSupplier(location);
XmlIndex schema = (XmlIndex) readSchema(input);
String ns = "http://www.example.com";
assertEquals(ns, schema.getNamespace());
// shiporder element
Collection<XmlElement> elements = getElementsWithNS(ns, schema.getElements().values());
assertEquals(1, elements.size());
XmlElement shiporder = elements.iterator().next();
assertNotNull(shiporder);
TypeDefinition type = shiporder.getType();
assertEquals(5, type.getChildren().size());
// contained shiporder element
PropertyDefinition s2 = type.getChild(new QName(ns, "shiporder")).asProperty();
assertNotNull(s2);
assertEquals(type, s2.getPropertyType());
}
Aggregations