@Override protected void createObject(EObject peekObject, EStructuralFeature feature) { if (!isNull()) { String xsiType = getXSIType(); Map<String, Map<EClassifier, String>> featureToTypeMap = xsiType == null ? UML22UMLExtendedMetaData.getFeatureToTypeMap() : UML22UMLExtendedMetaData.getTypeToTypeMap().get(xsiType); Map<EClassifier, String> typeMap = featureToTypeMap == null ? null : featureToTypeMap.get(feature.getName()); if (typeMap != null) { EObject eObject = peekObject instanceof AnyType ? (EObject) objects.get(objects.size() - 2) : peekObject; for (Map.Entry<EClassifier, String> entry : typeMap.entrySet()) { if (entry.getKey().isInstance(eObject)) { xsiType = entry.getValue(); break; } } } if (xsiType != null) { createObjectFromTypeName(peekObject, xsiType, feature); } else { super.createObject(peekObject, feature); } } }
@Override protected void createObject(EObject peekObject, EStructuralFeature feature) { if (!isNull()) { String xsiType = getXSIType(); Map<String, Map<EClassifier, String>> featureToTypeMap = xsiType == null ? UML212UMLExtendedMetaData.getFeatureToTypeMap() : null; Map<EClassifier, String> typeMap = featureToTypeMap == null ? null : featureToTypeMap.get(feature.getName()); if (typeMap != null) { EObject eObject = peekObject instanceof AnyType ? (EObject) objects.get(objects.size() - 2) : peekObject; for (Map.Entry<EClassifier, String> entry : typeMap.entrySet()) { if (entry.getKey().isInstance(eObject)) { xsiType = entry.getValue(); break; } } } if (xsiType != null) { createObjectFromTypeName(peekObject, xsiType, feature); } else { super.createObject(peekObject, feature); } } }
@Override protected void createObject(EObject peekObject, EStructuralFeature feature) { if (!isNull()) { String xsiType = getXSIType(); Map<String, Map<EClassifier, String>> featureToTypeMap = xsiType == null ? UML212UMLExtendedMetaData.getFeatureToTypeMap() : null; Map<EClassifier, String> typeMap = featureToTypeMap == null ? null : featureToTypeMap.get(feature.getName()); if (typeMap != null) { EObject eObject = peekObject instanceof AnyType ? (EObject) objects.get(objects.size() - 2) : peekObject; for (Map.Entry<EClassifier, String> entry : typeMap.entrySet()) { if (entry.getKey().isInstance(eObject)) { xsiType = entry.getValue(); break; } } } if (xsiType != null) { createObjectFromTypeName(peekObject, xsiType, feature); } else { super.createObject(peekObject, feature); } } }
if (objects.size() > 1)
if (objects.size() > 1)
protected void recordUnknownFeature(String prefix, String name, boolean isElement, EObject peekObject, String value) { if (isElement) { AnyType anyType = getExtension(peekObject); int objectsIndex = objects.size(); objects.push(anyType); int mixedTargetsIndex = mixedTargets.size(); mixedTargets.push(anyType.getAny()); int typesIndex = types.size(); types.push(UNKNOWN_FEATURE_TYPE); handleFeature(prefix, name); objects.remove(objectsIndex); mixedTargets.remove(mixedTargetsIndex); types.remove(typesIndex); } else { AnyType anyType = getExtension(peekObject); setAttribValue(anyType, prefix == null ? name : prefix + ":" + name, value); } }
protected void recordUnknownFeature(String prefix, String name, boolean isElement, EObject peekObject, String value) { if (isElement) { AnyType anyType = getExtension(peekObject); int objectsIndex = objects.size(); objects.push(anyType); int mixedTargetsIndex = mixedTargets.size(); mixedTargets.push(anyType.getAny()); int typesIndex = types.size(); types.push(UNKNOWN_FEATURE_TYPE); handleFeature(prefix, name); objects.remove(objectsIndex); mixedTargets.remove(mixedTargetsIndex); types.remove(typesIndex); } else { AnyType anyType = getExtension(peekObject); setAttribValue(anyType, prefix == null ? name : prefix + ":" + name, value); } }
@Override public void endElement(String uri, String localName, String name) { if (objects.size() == 1 && objects.peek() instanceof Profile) { handleForwardReferences(); } super.endElement(uri, localName, name); }