writer.println();\r
}\r
\r
+ protected abstract void createReferenceIndicator(SchemaObject parent, RefType referenceType, String refName, String objectName, String primaryClassName, String secondaryClassName, boolean useElementList, boolean useOriginalList);\r
+ protected abstract void createPrimitiveIndicator(SchemaObject parent, String refName, String binding);\r
+ protected abstract void createElementIndicator(SchemaObject parent, boolean useElementList, String refName, String className, boolean useOriginalList);\r
\r
+ @Override\r
+ protected void handleIndicator(SchemaObject parent, SchemaElement indicator, SchemaElement element, String refName, RefType referenceType) {\r
+ String objectName;\r
+ if (referenceType != RefType.Element) {\r
+ QName refType;\r
+ if (referenceType == RefType.Type) {\r
+ refType = element.getElement().getType();\r
+ if (refName == null)\r
+ refName = element.getElement().getName();\r
+ objectName = element.getElement().getName();\r
+ } else {\r
+ refType = element.getElement().getRef();\r
+ if (refName == null)\r
+ refName = refType.getLocalPart();\r
+ objectName = refType.getLocalPart();\r
+ }\r
+ \r
+ String binding = getBindingFromPrimitiveType(refType);\r
+ if (binding == null) {\r
+ SchemaObject refElement = elementName.get(refType.getLocalPart());\r
+ SchemaObject refComplexType = complexTypeName.get(refType.getLocalPart());\r
\r
-\r
+ // prefer element reference over complex type reference\r
+ String primaryClassName = null;\r
+ String secondaryClassName = null;\r
+ if (refElement != null)\r
+ primaryClassName = getName(refElement);\r
+ else\r
+ primaryClassName = getName(refComplexType);\r
+ \r
+ if (refComplexType != null) {\r
+ secondaryClassName = getName(refComplexType);\r
+ } else {\r
+ secondaryClassName = getName(refElement);\r
+ }\r
+ boolean useElementList = useElementList(parent, indicator,element, referenceType == RefType.Reference, refName, refType);\r
+ boolean useOriginalList = useOriginalList(parent, indicator,element, referenceType == RefType.Reference, refName, refType);\r
+ createReferenceIndicator(parent, referenceType, refName, objectName, primaryClassName, secondaryClassName, useElementList, useOriginalList);\r
+ } else {\r
+ createPrimitiveIndicator(parent, refName, binding);\r
+ }\r
+ } else {\r
+ Element attrs= element.getElement();\r
+ SchemaObject obj = getWithObj(parent, attrs);\r
+ \r
+ String className = getName(obj);\r
+ if (refName == null)\r
+ refName = attrs.getName();\r
+ \r
+ boolean useElementList = useElementList(parent, indicator,element, false, refName, new QName(obj.getName()));\r
+ boolean useOriginalList = useOriginalList(parent, indicator,element, false, refName, new QName(obj.getName()));\r
+ createElementIndicator(parent, useElementList, refName, className, useOriginalList);\r
+ }\r
+ }\r
\r
}\r