/** * Collecting all properties from a EMF object, if contansReferences is TRUE, all features should * be contained, otherwise, only EAttrubutes will be returned. */ public static List<EStructuralFeature> collectProperties( EClass eClass, boolean containsSupers, boolean containsReferences, boolean containsUnsettables) { if (eClass == null) { return Collections.emptyList(); } List<EStructuralFeature> properties = new ArrayList<EStructuralFeature>(); List<EStructuralFeature> features = null; if (containsReferences) { features = eClass.getEStructuralFeatures(); } else { features = new ArrayList<EStructuralFeature>(eClass.getEAttributes()); } for (EStructuralFeature sf : features) { try { if (containsUnsettables || eClass.eIsSet(sf)) { properties.add(sf); } } catch (Exception e) { } } if (containsSupers) { EList<EClass> eSuperTypes = eClass.getESuperTypes(); for (EClass eSuperClass : eSuperTypes) { properties.addAll( collectProperties( eSuperClass, containsSupers, containsReferences, containsUnsettables)); } } return properties; }