import org.w3._2001.xmlschema.Element;\r
import org.w3._2001.xmlschema.ExplicitGroup;\r
import org.w3._2001.xmlschema.ExtensionType;\r
-import org.w3._2001.xmlschema.LocalComplexType;\r
+import org.w3._2001.xmlschema.GroupRef;\r
import org.w3._2001.xmlschema.LocalElement;\r
import org.w3._2001.xmlschema.NamedAttributeGroup;\r
+import org.w3._2001.xmlschema.NamedGroup;\r
import org.w3._2001.xmlschema.OpenAttrs;\r
+import org.w3._2001.xmlschema.RealGroup;\r
import org.w3._2001.xmlschema.Restriction;\r
import org.w3._2001.xmlschema.Schema;\r
import org.w3._2001.xmlschema.SimpleContent;\r
import org.w3._2001.xmlschema.TopLevelComplexType;\r
import org.w3._2001.xmlschema.TopLevelElement;\r
import org.w3._2001.xmlschema.TopLevelSimpleType;\r
+import org.w3._2001.xmlschema.Union;\r
\r
-public abstract class SchemaConversionBase {\r
+public final class SchemaConversionBase {\r
\r
protected Schema schema;\r
+ protected SchemaConverter converter;\r
+ protected SchemaConversionComponent component;\r
protected Configuration configuration;\r
\r
- protected static final String SCHEMA_NS = "http://www.w3.org/2001/XMLSchema";\r
- protected static final String CONVERSION_NS = "http://www.simantics.org/Layer0";\r
+ public static final String SCHEMA_NS = "http://www.w3.org/2001/XMLSchema";\r
+ public static final String CONVERSION_NS = "http://www.simantics.org/Layer0";\r
\r
protected Map<String,Map<String,TypeEntry>> typeMap;\r
\r
- public SchemaConversionBase(Configuration configuration) {\r
- this.configuration = configuration;\r
- typeMap = new HashMap<String, Map<String,TypeEntry>>();\r
+ protected String ontologyURI;\r
+ protected String className;\r
+ \r
+ public SchemaConversionBase(SchemaConverter converter, String ontologyUri, String className) {\r
+ this.converter = converter;\r
+ this.configuration = converter.getConfiguration();\r
+ this.ontologyURI = ontologyUri;\r
+ this.className = className;\r
\r
+ initTypes();\r
+ }\r
+ \r
+ protected void initTypes() {\r
+ typeMap = new HashMap<String, Map<String,TypeEntry>>();\r
Map<String,TypeEntry> schemaTypes = new HashMap<String, SchemaConversionBase.TypeEntry>();\r
typeMap.put(SCHEMA_NS, schemaTypes);\r
Map<String,TypeEntry> l0Types = new HashMap<String, SchemaConversionBase.TypeEntry>();\r
schemaTypes.put("token", new TypeEntry("L0.String", "Bindings.STRING", "java.lang.String", "","","","",""));\r
schemaTypes.put("ID", new TypeEntry("L0.String", "Bindings.STRING", "java.lang.String", "","","","","",true));\r
schemaTypes.put("IDREF", new TypeEntry("L0.String", "Bindings.STRING", "java.lang.String", "","","","",""));\r
+ schemaTypes.put("Name", new TypeEntry("L0.String", "Bindings.STRING", "java.lang.String", "","","","",""));\r
+ schemaTypes.put("NCName", new TypeEntry("L0.String", "Bindings.STRING", "java.lang.String", "","","","",""));\r
schemaTypes.put("date", new TypeEntry("XML.Date", "org.simantics.xml.sax.base.datatypes.literal.Date.BINDING", "org.simantics.xml.sax.base.datatypes.literal.Date", "","org.simantics.xml.sax.base.datatypes.literal.Date.parseDate(",")","(",").toString()"));\r
schemaTypes.put("time", new TypeEntry("XML.Time", "org.simantics.xml.sax.base.datatypes.literal.Time.BINDING", "org.simantics.xml.sax.base.datatypes.literal.Time", "","org.simantics.xml.sax.base.datatypes.literal.Time.parseTime(",")","(",").toString()"));\r
schemaTypes.put("dateTime", new TypeEntry("XML.DateTime", "org.simantics.xml.sax.base.datatypes.literal.DateTime.BINDING", "org.simantics.xml.sax.base.datatypes.literal.DateTime", "","org.simantics.xml.sax.base.datatypes.literal.DateTime.parseDateTime(",")","(",").toString()"));\r
schemaTypes.put("unsignedLong", new TypeEntry("L0.Long", "Bindings.LONG", "long", "0","java.lang.Long.parseLong(",")","java.lang.Long.toString(",")"));\r
schemaTypes.put("base64Binary", new TypeEntry("L0.ByteArray", "Bindings.BYTE_ARRAY", "byte[]", "new byte[0]","",".getBytes(org.simantics.databoard.util.binary.UTF8.CHARSET)","new java.lang.String(",", org.simantics.databoard.util.binary.UTF8.CHARSET)"));\r
\r
- \r
- \r
l0Types.put("doubleArray", new TypeEntry("L0.DoubleArray", "Bindings.DOUBLE_ARRAY", "double[]", null,null,null,"java.lang.Double.toString(",")"));\r
l0Types.put("stringArray", new TypeEntry("L0.StringArray", "Bindings.STRING_ARRAY", "string[]", null,null,null,"",""));\r
}\r
\r
- \r
protected TypeEntry getTypeEntry(QName type) {\r
Map<String,TypeEntry> types = typeMap.get(type.getNamespaceURI());\r
if (types == null)\r
}\r
\r
\r
- protected void handle(Schema schema) { \r
+ public void init(Schema schema) { \r
this.schema = schema;\r
- preload();\r
\r
+ preload();\r
+ }\r
+ \r
+ public void handle(SchemaConversionComponent component) {\r
+ this.component = component;\r
for (OpenAttrs attrs : schema.getSimpleTypeOrComplexTypeOrGroup()) {\r
if (attrs instanceof TopLevelAttribute) {\r
handle((TopLevelAttribute)attrs);\r
handleSimpleType(simpleTypes.get(attrs));\r
} else if (attrs instanceof NamedAttributeGroup) {\r
handle((NamedAttributeGroup)attrs);\r
+ } else if (attrs instanceof NamedGroup) {\r
+ handle((NamedGroup)attrs);\r
} else {\r
System.out.println(attrs.getClass().getName());\r
}\r
}\r
}\r
\r
- protected Map<String,SchemaObject> elementName = new HashMap<String, SchemaObject>();\r
- protected Map<String,SchemaObject> complexTypeName = new HashMap<String, SchemaObject>();\r
- protected Map<String,SchemaObject> simpleTypeName = new HashMap<String, SchemaObject>();\r
- protected Map<Element,SchemaObject> elements = new HashMap<Element, SchemaObject>();\r
- protected Map<ComplexType,SchemaObject> complexTypes = new HashMap<ComplexType, SchemaObject>();\r
- protected Map<SimpleType,SchemaObject> simpleTypes = new HashMap<SimpleType, SchemaObject>();\r
+ protected Map<String,SchemaObject> elementName = new HashMap<>();\r
+ protected Map<String,SchemaObject> complexTypeName = new HashMap<>();\r
+ protected Map<String,SchemaObject> simpleTypeName = new HashMap<>();\r
+ protected Map<String,SchemaObject> modelGroupName = new HashMap<>();\r
+ protected Map<Element,SchemaObject> elements = new HashMap<>();\r
+ protected Map<ComplexType,SchemaObject> complexTypes = new HashMap<>();\r
+ protected Map<SimpleType,SchemaObject> simpleTypes = new HashMap<>();\r
+ protected Map<NamedGroup,SchemaObject> modelGroups = new HashMap<>();\r
\r
\r
protected SchemaObject getWithName(SchemaObject referrer, String name) {\r
return obj;\r
}\r
\r
+ protected SchemaObject getWithName(String name) {\r
+ SchemaObject obj = elementName.get(name);\r
+ if (obj == null)\r
+ obj = complexTypeName.get(name);\r
+ if (obj == null)\r
+ obj = simpleTypeName.get(name);\r
+ if (obj == null) {\r
+ throw new RuntimeException("Cannot locate referred type " + name);\r
+ }\r
+ return obj;\r
+ }\r
+ \r
protected SchemaObject getWithObj(SchemaObject referrer, OpenAttrs attrs) {\r
SchemaObject obj = null;\r
if (attrs instanceof Element)\r
SimpleType simpleType = (SimpleType)attrs;\r
SchemaObject obj = new SchemaObject(simpleType);\r
stack.push(obj);\r
+ } else if (attrs instanceof Attribute) {\r
+ // Attributes are not cached\r
+ } else if (attrs instanceof AttributeGroup) {\r
+ // Attribute groups are not cached\r
+ } else if (attrs instanceof NamedGroup) {\r
+ NamedGroup group = (NamedGroup)attrs;\r
+ SchemaObject obj = new SchemaObject(group);\r
+ stack.push(obj);\r
+ } else {\r
+ System.out.println(attrs.getClass().getName());\r
}\r
}\r
\r
while (!stack.isEmpty()) {\r
SchemaObject object = stack.pop();\r
- if (object.getType() == ObjectType.COMPLEX_TYPE) {\r
+ switch (object.getType()) {\r
+ case COMPLEX_TYPE:{\r
ComplexType ct = object.getComplexType();\r
if (ct.getName() != null && ct.getName().length() > 0 && ct instanceof TopLevelComplexType)\r
complexTypeName.put(ct.getName(), object);\r
throw new RuntimeException("Groups not supported");\r
}\r
}\r
- } else if (object.getType() == ObjectType.ELEMENT) {\r
+ break;\r
+ } \r
+ case ELEMENT:{\r
Element e = object.getElement();\r
if (e instanceof TopLevelElement)\r
elementName.put(e.getName(), object);\r
stack.push(new SchemaObject(object,e.getComplexType()));\r
if (e.getSimpleType() != null)\r
stack.push(new SchemaObject(object,e.getSimpleType()));\r
- } else if (object.getType() == ObjectType.SIMPLE_TYPE) {\r
+ break;\r
+ } \r
+ case SIMPLE_TYPE:{\r
SimpleType e = object.getSimpleType();\r
if (e instanceof TopLevelSimpleType)\r
simpleTypeName.put(e.getName(), object);\r
simpleTypes.put(e, object);\r
+ break;\r
+ } \r
+ case MODEL_GROUP:{\r
+ NamedGroup e = object.getModelGroup();\r
+ modelGroupName.put(e.getName(), object);\r
+ modelGroups.put(e, object);\r
+ break;\r
}\r
- }\r
+ }\r
+ } // while\r
}\r
\r
private void preload(SchemaObject parent,ExplicitGroup eg, Deque<SchemaObject> stack) {\r
SchemaObject obj = new SchemaObject(parent,(Element)elemValue);\r
obj.setRename(getRename((Element)elemValue));\r
stack.add(obj);\r
- } else if (elemValue instanceof All) {\r
- preload(parent,(All)elemValue, stack);\r
} else if (elemValue instanceof ExplicitGroup) {\r
preload(parent,(ExplicitGroup)elemValue, stack);\r
+ } else if (elemValue instanceof RealGroup) {\r
+ preload(parent,(RealGroup)elemValue, stack);\r
} else {\r
throw new RuntimeException("Unknown ExplicitGroup element " + elemValue.getClass().getName());\r
}\r
}\r
}\r
\r
+ private void preload(SchemaObject parent, RealGroup eg, Deque<SchemaObject> stack) {\r
+ System.out.println(eg); \r
+ if (eg instanceof NamedGroup) {\r
+ SchemaObject obj = new SchemaObject(parent,(NamedGroup)eg);\r
+ stack.add(obj);\r
+ }\r
+ }\r
+\r
+ \r
protected void handle(TopLevelAttribute topLevelAttribute) {\r
handle(null, topLevelAttribute);\r
}\r
handle(null, namedAttributeGroup);\r
}\r
\r
+ protected void handle(NamedGroup namedAttributeGroup){\r
+ handle(null, namedAttributeGroup);\r
+ }\r
+ \r
protected QName getComplexTypeBase(ComplexType complexType) {\r
if (complexType == null)\r
return null;\r
}\r
\r
protected QName getSimpleTypeBase(SimpleType simpleType) {\r
- if (simpleType == null)\r
- return null;\r
- return simpleType.getRestriction().getBase();\r
+// if (simpleType == null)\r
+// return null;\r
+// return simpleType.getRestriction().getBase();\r
+ \r
+ Restriction restriction = simpleType.getRestriction();\r
+ if (restriction != null) {\r
+ QName base = restriction.getBase();\r
+ return base;\r
+ } else if (simpleType.getId() != null) {\r
+ throw new RuntimeException(simpleType.getName() + " restriction error");\r
+ } else if (simpleType.getUnion() != null) {\r
+ Union union = simpleType.getUnion();\r
+ if (union.getMemberTypes().size() > 0) {\r
+ QName base = null;\r
+ for (QName type : union.getMemberTypes()) {\r
+ QName sType = null;\r
+ TypeEntry entry = getTypeEntry(type);\r
+ if (entry == null) {\r
+ SchemaObject obj = simpleTypeName.get(type.getLocalPart());\r
+ if (obj == null)\r
+ throw new RuntimeException(simpleType.getName() + " union has unresolved reference " + type.getLocalPart());\r
+ sType = getSimpleTypeBase(obj.getSimpleType());\r
+ } else {\r
+ sType = type;\r
+ }\r
+ if (base == null)\r
+ base = sType;\r
+ else if (!base.equals(sType)) {\r
+ //FIXME : throw new RuntimeException(simpleType.getName() + " union has incompatible member types");\r
+ // fall back to string. \r
+ base = new QName(SCHEMA_NS, "string");\r
+ \r
+ }\r
+ }\r
+ return base;\r
+ } else {\r
+ if (union.getSimpleType().size() == 0)\r
+ throw new RuntimeException(simpleType.getName() + " union error");\r
+ for (SimpleType s : union.getSimpleType()) {\r
+ if (restriction == null)\r
+ restriction = s.getRestriction();\r
+ else {\r
+ Restriction r = s.getRestriction();\r
+ if (!r.getBase().equals(restriction.getBase()))\r
+ throw new RuntimeException(simpleType.getName() + " union has incompatible restriction bases");\r
+ }\r
+ }\r
+ QName base = restriction.getBase();\r
+ return base;\r
+ }\r
+ } else if (simpleType.getList() != null) {\r
+ // FIXME: callers cannot get the information that we have a list.\r
+ org.w3._2001.xmlschema.List list = simpleType.getList();\r
+ return list.getItemType();\r
+ } else {\r
+ throw new RuntimeException(simpleType.getName() + " restriction error");\r
+ }\r
}\r
\r
protected QName getElementBase(Element element) {\r
}\r
}\r
\r
- protected abstract void handleAttributes(SchemaObject simpleTypeObj);\r
+ protected void handleAttributes(SchemaObject simpleTypeObj) {\r
+ component.handleAttributes(simpleTypeObj);\r
+ }\r
\r
protected void handleExtensionAttributes(SchemaObject complexType) {\r
ComplexContent complexContent = complexType.getComplexType().getComplexContent();\r
return null;\r
}\r
\r
- protected abstract void handleAttributeComposition(SchemaObject obj, AttributeComposition composition, BijectionMap<org.simantics.xml.sax.configuration.Attribute, Annotated> attributes);\r
+ //protected abstract void handleAttributeComposition(SchemaObject obj, AttributeComposition composition, BijectionMap<org.simantics.xml.sax.configuration.Attribute, Annotated> attributes);\r
+ protected void handleAttributeComposition(SchemaObject obj, AttributeComposition composition, BijectionMap<org.simantics.xml.sax.configuration.Attribute, Annotated> attributes) {\r
+ component.handleAttributeComposition(obj, composition, attributes);\r
+ }\r
\r
\r
\r
\r
protected void handleComplexType(SchemaObject complexType) {\r
- handleComplexTypeAttributes(complexType);\r
- handleComplexTypeExtension(complexType);\r
- handleExtensionAttributes(complexType);\r
+// handleComplexTypeAttributes(complexType);\r
+// handleComplexTypeExtension(complexType);\r
+// handleExtensionAttributes(complexType);\r
+ component.handleComplexType(complexType);\r
+ }\r
+ \r
+ protected void handleElement(SchemaObject topLevelElement) {\r
+// LocalComplexType complexType = topLevelElement.getElement().getComplexType();\r
+// \r
+// if (complexType != null) {\r
+// SchemaObject complextTypeObj = complexTypes.get(complexType);\r
+// handleElementComplexTypeAttributes(complextTypeObj);\r
+// handleComplexTypeExtension(complextTypeObj);\r
+// } \r
+ component.handleElement(topLevelElement);\r
}\r
\r
protected enum RefType{Element,Reference,Type};\r
\r
- protected abstract void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType refType);\r
- protected abstract void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement any);\r
- protected abstract void handle(SchemaObject parent, SchemaElement indicator, List<SchemaElement> elements);\r
+ protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType refType) {\r
+ component.handleIndicator(parent, indicator, element, refName, refType);\r
+ }\r
+ protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement any) {\r
+ component.handleIndicator(parent, indicator, any);\r
+ }\r
+ protected void handle(SchemaObject parent, SchemaElement indicator, List<SchemaElement> elements) {\r
+ //component.handle(parent, indicator, elements);\r
+ if (indicator.getType() == SchemaElement.ElementType.SEQUENCE || (indicator.getType() == SchemaElement.ElementType.CHOICE && indicator.getRestriction().many())) {\r
+ for (SchemaElement e : elements) {\r
+ handle(parent, indicator, e);\r
+ }\r
+ } else if (indicator.getType() == SchemaElement.ElementType.CHOICE) {\r
+ String name = getChoiceName(elements);\r
+ component.handleChoice(parent, indicator, elements, name);\r
+ }\r
+ }\r
\r
protected void handle(SchemaObject parent, ExplicitGroup eg, SchemaElement.ElementType indicator) {\r
handle(parent, new SchemaElement(eg, indicator));\r
List<SchemaElement> sequences = new ArrayList<SchemaElement>();\r
List<SchemaElement> alls = new ArrayList<SchemaElement>();\r
List<SchemaElement> anys = new ArrayList<SchemaElement>();\r
+ List<SchemaElement> groups = new ArrayList<SchemaElement>();\r
\r
for (Object o : indicator.getGroup().getParticle()) {\r
if (o instanceof JAXBElement<?>) {\r
} else if ("sequence".equals(qname.getLocalPart())) {\r
sequences.add(new SchemaElement(indicator,(ExplicitGroup)elemValue, ElementType.SEQUENCE));\r
}\r
+ } else if (elemValue instanceof RealGroup) {\r
+ if (elemValue instanceof GroupRef) {\r
+ groups.add(new SchemaElement(indicator,(GroupRef)elemValue, ElementType.GROUP_REF));\r
+ } else if (elemValue instanceof NamedGroup) {\r
+ groups.add(new SchemaElement(indicator,(NamedGroup)elemValue, ElementType.NAMED_GROUP));\r
+ } else {\r
+ throw new RuntimeException("Unknown ExplicitGroup element " + elemValue.getClass().getName());\r
+ }\r
} else {\r
throw new RuntimeException("Unknown ExplicitGroup element " + elemValue.getClass().getName());\r
}\r
}\r
}\r
\r
- if (elements.size() == 0 && choices.size() == 0 && sequences.size() == 0 && alls.size() == 0 && anys.size() == 0) {\r
+ if (elements.size() == 0 && choices.size() == 0 && sequences.size() == 0 && alls.size() == 0 && anys.size() == 0 && groups.size() == 0) {\r
return;\r
}\r
\r
for (SchemaElement c : alls) {\r
handle(parent, c);\r
}\r
+ \r
+ for (SchemaElement c : groups) {\r
+ handle(parent, c);\r
+ }\r
handle(parent, indicator, elements);\r
for (SchemaElement a : anys) {\r
handleIndicator(parent, indicator, a);\r
for (SchemaElement a : anys) {\r
handleIndicator(parent, indicator, a);\r
}\r
+ for (SchemaElement c : groups) {\r
+ handle(parent, c);\r
+ }\r
}\r
} else {\r
- if (sequences.size() > 0 || choices.size() > 0 || alls.size() > 0) {\r
+ if (sequences.size() > 0 || choices.size() > 0 || alls.size() > 0 || groups.size() > 0) {\r
throw new RuntimeException("Cannot handle Sequence with inner ExplicitGroups");\r
}\r
handle(parent, indicator, elements);\r
\r
} else if (indicator.getType() == SchemaElement.ElementType.CHOICE){\r
if (indicator.getRestriction().single()) {\r
- if (sequences.size()> 0 || choices.size() > 0 || alls.size() > 0 || anys.size() > 0) {\r
+ if (sequences.size()> 0 || choices.size() > 0 || alls.size() > 0 || anys.size() > 0 || groups.size() > 0) {\r
throw new RuntimeException("Cannot handle Choice that contains something else than Elements");\r
}\r
handle(parent, indicator, elements);\r
\r
} else {\r
- if (sequences.size() > 0 || choices.size() > 0) {\r
+ if (sequences.size() > 0 || choices.size() > 0 || alls.size() > 0 || groups.size() > 0) {\r
throw new RuntimeException("Cannot handle Choice with inner ExplicitGroups");\r
}\r
handle(parent, indicator, elements);\r
}\r
}\r
} else if (indicator.getType() == ElementType.ALL) {\r
- if (sequences.size()> 0 || choices.size() > 0 || alls.size() > 0 || anys.size() > 0) {\r
+ if (sequences.size()> 0 || choices.size() > 0 || alls.size() > 0 || anys.size() > 0 || groups.size() > 0) {\r
throw new RuntimeException("Cannot handle All that contains something else than Elements");\r
}\r
if (!indicator.getRestriction().single()) {\r
}\r
return name;\r
}\r
+ \r
+ protected void handle(SchemaObject parent, Attribute attribute) {\r
+ component.handle(parent, attribute);\r
+ }\r
+ protected void handle(SchemaObject parent, AttributeGroup attribute) {\r
+ component.handle(parent, attribute);\r
+ }\r
+ protected void handle(SchemaObject parent, NamedGroup attribute){\r
+ component.handle(parent, attribute);\r
+ };\r
\r
- \r
- protected abstract void handle(SchemaObject parent, Attribute attribute) ;\r
- protected abstract void handle(SchemaObject parent, AttributeGroup attribute) ;\r
- \r
- protected abstract void handleSimpleType(SchemaObject parent, SchemaObject simpleType);\r
+ protected void handleSimpleType(SchemaObject parent, SchemaObject simpleType) {\r
+ component.handleSimpleType(parent, simpleType);\r
+ }\r
\r
\r
\r
}\r
}\r
\r
- protected void handleElement(SchemaObject topLevelElement) {\r
- LocalComplexType complexType = topLevelElement.getElement().getComplexType();\r
- \r
- if (complexType != null) {\r
- SchemaObject complextTypeObj = complexTypes.get(complexType);\r
- handleElementComplexTypeAttributes(complextTypeObj);\r
- handleComplexTypeExtension(complextTypeObj);\r
- }\r
- \r
- \r
- }\r
- \r
\r
- protected boolean isElementRef(String ref) {\r
+ public boolean isElementRef(String ref) {\r
return elementName.containsKey(ref);\r
}\r
\r
- protected boolean isComplexTypeRef(String ref) {\r
+ public boolean isComplexTypeRef(String ref) {\r
return complexTypeName.containsKey(ref);\r
}\r
\r
- protected boolean isSimpleTypeRef(String ref) {\r
+ public boolean isSimpleTypeRef(String ref) {\r
return simpleTypeName.containsKey(ref);\r
}\r
\r
- protected NamedAttributeGroup getAttributeGroup(String name) {\r
+ public NamedAttributeGroup getAttributeGroup(String name) {\r
for (OpenAttrs attrs : schema.getSimpleTypeOrComplexTypeOrGroup()) {\r
if (attrs instanceof NamedAttributeGroup) {\r
NamedAttributeGroup group = (NamedAttributeGroup)attrs;\r
return null;\r
}\r
\r
- protected IDProvider getIDProvider(Element element) {\r
+ public IDProvider getIDProvider(Element element) {\r
List<IDProvider> idProviders = new ArrayList<IDProvider>(2);\r
for (JAXBElement<?> e : configuration.getConversionRule()) {\r
if (e.getValue() instanceof IDProvider) {\r
return idProviders.get(0);\r
}\r
\r
- protected IDProvider getIDProvider(ComplexType complexType) {\r
+ public IDProvider getIDProvider(ComplexType complexType) {\r
List<IDProvider> idProviders = new ArrayList<IDProvider>(2);\r
for (JAXBElement<?> e : configuration.getConversionRule()) {\r
if (e.getValue() instanceof IDProvider) {\r
return idProviders.get(0);\r
}\r
\r
- protected List<IDReference> getIDReferences(Element element) {\r
+ public List<IDReference> getIDReferences(Element element) {\r
List<IDReference> idReferences = new ArrayList<IDReference>(2);\r
for (JAXBElement<?> e : configuration.getConversionRule()) {\r
if (e.getValue() instanceof IDReference) {\r
return idReferences;\r
}\r
\r
- protected List<IDReference> getIDReferences(ComplexType complexType) {\r
+ public List<IDReference> getIDReferences(ComplexType complexType) {\r
List<IDReference> idReferences = new ArrayList<IDReference>(2);\r
for (JAXBElement<?> e : configuration.getConversionRule()) {\r
if (e.getValue() instanceof IDReference) {\r
}\r
}\r
\r
- public abstract String getComplexTypePrefix(); \r
- \r
- public abstract String getAttributeGroupPrefix();\r
- \r
- public abstract String getName(SchemaObject obj);\r
- \r
- protected abstract String getBaseClass(ObjectType type);\r
+ public String getComplexTypePrefix() {\r
+ return component.getComplexTypePrefix();\r
+ }\r
+ public String getAttributeGroupPrefix() {\r
+ return component.getAttributeGroupPrefix();\r
+ }\r
+ public String getName(SchemaObject obj) {\r
+ return component.getName(obj);\r
+ }\r
+ public String getBaseClass(ObjectType type) {\r
+ return component.getBaseClass(type);\r
+ }\r
\r
\r
\r
- protected Inheritance getInheritance(SchemaObject topLevelObj) {\r
+ public Inheritance getInheritance(SchemaObject topLevelObj) {\r
Inheritance inheritance = null;\r
if (topLevelObj.getType() == ObjectType.ELEMENT) {\r
Element topLevelElement = topLevelObj.getElement();\r
ExtensionType extensionType = simpleContent.getExtension();\r
if (extensionType != null) {\r
type = extensionType.getBase();\r
- getAtomicTypeInheritance(type, topLevelObj, inheritance);\r
+ getAtomicTypeInheritance(type, inheritance);\r
}\r
}\r
}\r
* @param topLevelObj\r
* @param inheritance\r
*/\r
- protected void getAtomicTypeInheritance(QName type, SchemaObject topLevelObj, Inheritance inheritance) {\r
+ public void getAtomicTypeInheritance(QName type, Inheritance inheritance) {\r
if (!type.getNamespaceURI().equals(SCHEMA_NS)) {\r
- SchemaObject obj = getWithName(topLevelObj, type.getLocalPart());\r
+ SchemaObject obj = getWithName(type.getLocalPart());\r
if (obj.getType() != ObjectType.SIMPLE_TYPE)\r
throw new RuntimeException("SimpleContent does not use SimpleType definition");\r
SimpleType simpleType = obj.getSimpleType();\r
type = getSimpleTypeBase(simpleType);\r
- getAtomicTypeInheritance(type, topLevelObj, inheritance);\r
+ getAtomicTypeInheritance(type, inheritance);\r
} else {\r
TypeEntry entry = getTypeEntry(type);\r
if (entry != null) {\r
}\r
}\r
}\r
+ \r
+ public String getDefaultValue(QName atype) {\r
+ Map<String,TypeEntry> types = typeMap.get(atype.getNamespaceURI());\r
+ if (types == null)\r
+ return null;\r
+ TypeEntry entry = types.get(atype.getLocalPart());\r
+ if (entry == null)\r
+ return null;\r
+ return entry.defaultValue;\r
+ }\r
\r
}\r