/** * Returns {@code true} if the feature is a feature map. * * @param eFeature the feature to test * * @return {@code true} if the feature is a feature map */ private boolean isFeatureMap(EStructuralFeature eFeature) { final EStructuralFeature featureGroup = ExtendedMetaData.INSTANCE.getGroup(eFeature); return nonNull(featureGroup) && FeatureMapUtil.isFeatureMap(featureGroup); }
private static boolean isEffectivelyTransient(EStructuralFeature eStructuralFeature) { if (eStructuralFeature.isTransient()) { EStructuralFeature group = ExtendedMetaData.INSTANCE.getGroup(eStructuralFeature); return group == null || isEffectivelyTransient(group); } else { return false; } }
private static boolean isEffectivelyTransient(EStructuralFeature eStructuralFeature) { if (eStructuralFeature.isTransient()) { EStructuralFeature group = ExtendedMetaData.INSTANCE.getGroup(eStructuralFeature); return group == null || isEffectivelyTransient(group); } else { return false; } }
public boolean isIncluded(EStructuralFeature feature) { if (wildcards == ANY_WILDCARD) { int featureKind = ExtendedMetaData.INSTANCE.getFeatureKind(feature); return isElement ? featureKind == ExtendedMetaData.ELEMENT_FEATURE && feature != XMLTypeFeatures.TEXT && feature != XMLTypeFeatures.CDATA && feature != XMLTypeFeatures.COMMENT && feature != XMLTypeFeatures.PROCESSING_INSTRUCTION : featureKind == ExtendedMetaData.ATTRIBUTE_FEATURE; } if (groupMembers != null && (groupMembers.contains(feature) || groupMembers.contains(ExtendedMetaData.INSTANCE.getGroup(feature)) || groupMembers.contains(ExtendedMetaData.INSTANCE.getAffiliation(containingClass, feature)))) { return true; } if (wildcards != null) { if (ExtendedMetaData.INSTANCE.matches(wildcards, ExtendedMetaData.INSTANCE.getNamespace(feature))) { int featureKind = ExtendedMetaData.INSTANCE.getFeatureKind(feature); return isElement ? featureKind == ExtendedMetaData.ELEMENT_FEATURE : featureKind == ExtendedMetaData.ATTRIBUTE_FEATURE; } } return false; } }
public boolean isIncluded(EStructuralFeature feature) { if (wildcards == ANY_WILDCARD) { int featureKind = ExtendedMetaData.INSTANCE.getFeatureKind(feature); return isElement ? featureKind == ExtendedMetaData.ELEMENT_FEATURE && feature != XMLTypeFeatures.TEXT && feature != XMLTypeFeatures.CDATA && feature != XMLTypeFeatures.COMMENT && feature != XMLTypeFeatures.PROCESSING_INSTRUCTION : featureKind == ExtendedMetaData.ATTRIBUTE_FEATURE; } if (groupMembers != null && (groupMembers.contains(feature) || groupMembers.contains(ExtendedMetaData.INSTANCE.getGroup(feature)) || groupMembers.contains(ExtendedMetaData.INSTANCE.getAffiliation(containingClass, feature)))) { return true; } if (wildcards != null) { if (ExtendedMetaData.INSTANCE.matches(wildcards, ExtendedMetaData.INSTANCE.getNamespace(feature))) { int featureKind = ExtendedMetaData.INSTANCE.getFeatureKind(feature); return isElement ? featureKind == ExtendedMetaData.ELEMENT_FEATURE : featureKind == ExtendedMetaData.ATTRIBUTE_FEATURE; } } return false; } }
public Object eOpenGet(EStructuralFeature eFeature, boolean resolve) { EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature); if (openFeature != null) { if (!FeatureMapUtil.isFeatureMap(openFeature)) { openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature); } FeatureMap featureMap = (FeatureMap)eGet(openFeature); return ((FeatureMap.Internal)featureMap).get(eFeature, resolve); } else { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid feature"); } }
public void eOpenSet(EStructuralFeature eFeature, Object newValue) { EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature); if (openFeature != null) { if (!FeatureMapUtil.isFeatureMap(openFeature)) { openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature); if (openFeature == null) { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid changeable feature"); } } FeatureMap featureMap = (FeatureMap)eGet(openFeature); ((FeatureMap.Internal)featureMap).set(eFeature, newValue); } else { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid changeable feature"); } }
public boolean eOpenIsSet(EStructuralFeature eFeature) { EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature); if (openFeature != null) { if (!FeatureMapUtil.isFeatureMap(openFeature)) { openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature); } FeatureMap featureMap = (FeatureMap)eGet(openFeature); return ((FeatureMap.Internal)featureMap).isSet(eFeature); } else { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid feature"); } }
public Object eOpenGet(EStructuralFeature eFeature, boolean resolve) { EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature); if (openFeature != null) { if (!FeatureMapUtil.isFeatureMap(openFeature)) { openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature); } FeatureMap featureMap = (FeatureMap)eGet(openFeature); return ((FeatureMap.Internal)featureMap).get(eFeature, resolve); } else { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid feature"); } }
public void eOpenUnset(EStructuralFeature eFeature) { EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature); if (openFeature != null) { if (!FeatureMapUtil.isFeatureMap(openFeature)) { openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature); } FeatureMap featureMap = (FeatureMap)eGet(openFeature); ((FeatureMap.Internal)featureMap).unset(eFeature); } else { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid changeable feature"); } }
public boolean eOpenIsSet(EStructuralFeature eFeature) { EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature); if (openFeature != null) { if (!FeatureMapUtil.isFeatureMap(openFeature)) { openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature); } FeatureMap featureMap = (FeatureMap)eGet(openFeature); return ((FeatureMap.Internal)featureMap).isSet(eFeature); } else { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid feature"); } }
public void eOpenUnset(EStructuralFeature eFeature) { EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature); if (openFeature != null) { if (!FeatureMapUtil.isFeatureMap(openFeature)) { openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature); } FeatureMap featureMap = (FeatureMap)eGet(openFeature); ((FeatureMap.Internal)featureMap).unset(eFeature); } else { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid changeable feature"); } }
public void eOpenSet(EStructuralFeature eFeature, Object newValue) { EStructuralFeature openFeature = ExtendedMetaData.INSTANCE.getAffiliation(eClass(), eFeature); if (openFeature != null) { if (!FeatureMapUtil.isFeatureMap(openFeature)) { openFeature = ExtendedMetaData.INSTANCE.getGroup(openFeature); if (openFeature == null) { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid changeable feature"); } } FeatureMap featureMap = (FeatureMap)eGet(openFeature); ((FeatureMap.Internal)featureMap).set(eFeature, newValue); } else { throw new IllegalArgumentException("The feature '" + eFeature.getName() + "' is not a valid changeable feature"); } }
/** */ @Override public void notifyChanged(Notification notification) { updateChildren(notification); EObject object = (EObject)notification.getNotifier(); EClass eClass = object.eClass(); EStructuralFeature feature = (EStructuralFeature)notification.getFeature(); // Is this a containment reference child? // boolean child = ExtendedMetaData.INSTANCE.getContentKind(eClass) != ExtendedMetaData.MIXED_CONTENT && feature instanceof EReference && ((EReference)feature).isContainment() && ExtendedMetaData.INSTANCE.getGroup(feature) == null; // Or a feature map child? // child |= feature instanceof EAttribute && ExtendedMetaData.INSTANCE.getGroup(feature) == null && feature.getEType().getInstanceClass() == FeatureMap.Entry.class && !feature.isDerived(); // Is this the label feature? // boolean label = feature == getLabelFeature(eClass); fireNotifyChanged(new ViewerNotification(notification, object, child, !child || (child && label))); }
public boolean hasDelegateFeature() { EStructuralFeature ecoreFeature = getEcoreFeature(); EClass ecoreClass = ecoreFeature.getEContainingClass(); EStructuralFeature mixedFeature = getExtendedMetaData().getMixedFeature(ecoreClass); return (mixedFeature != null && mixedFeature != ecoreFeature && getExtendedMetaData().getFeatureKind(ecoreFeature) >= ExtendedMetaData.ELEMENT_FEATURE) || getExtendedMetaData().getGroup(ecoreFeature) != null; }
public boolean hasDelegateFeature() { EStructuralFeature ecoreFeature = getEcoreFeature(); EClass ecoreClass = ecoreFeature.getEContainingClass(); EStructuralFeature mixedFeature = getExtendedMetaData().getMixedFeature(ecoreClass); return (mixedFeature != null && mixedFeature != ecoreFeature && isPotentialDelegatingFeatureKind(getExtendedMetaData().getFeatureKind(ecoreFeature))) || getExtendedMetaData().getGroup(ecoreFeature) != null; }
public GenFeature getDelegateFeature() { EStructuralFeature ecoreFeature = getEcoreFeature(); EClass ecoreClass = ecoreFeature.getEContainingClass(); EStructuralFeature eStructuralFeature = getExtendedMetaData().getGroup(ecoreFeature); if (eStructuralFeature == null && getExtendedMetaData().getFeatureKind(ecoreFeature) >= ExtendedMetaData.ELEMENT_FEATURE) { eStructuralFeature = getExtendedMetaData().getMixedFeature(ecoreClass); } if (eStructuralFeature != null && eStructuralFeature != ecoreFeature) { return findGenFeature(eStructuralFeature); } else { return null; } }
public GenFeature getDelegateFeature() { EStructuralFeature ecoreFeature = getEcoreFeature(); EClass ecoreClass = ecoreFeature.getEContainingClass(); EStructuralFeature eStructuralFeature = getExtendedMetaData().getGroup(ecoreFeature); if (eStructuralFeature == null && isPotentialDelegatingFeatureKind(getExtendedMetaData().getFeatureKind(ecoreFeature))) { eStructuralFeature = getExtendedMetaData().getMixedFeature(ecoreClass); } if (eStructuralFeature != null && eStructuralFeature != ecoreFeature) { return findGenFeature(eStructuralFeature); } else { return null; } }