private static EClass iterateAndFind(Collection<Object> packages, Predicate<EObject> predicate) { return (EClass) packages.stream() .flatMap(e -> stream(spliteratorUnknownSize(((EPackage) e).eAllContents(), ORDERED), false)) .filter(e -> e instanceof EClass) .filter(predicate) .findFirst() .orElse(null); }
private static EClass iterateAndFind(Collection<Object> packages, Predicate<EObject> predicate) { return (EClass) packages.stream() .flatMap(e -> stream(spliteratorUnknownSize(((EPackage) e).eAllContents(), ORDERED), false)) .filter(e -> e instanceof EClass) .filter(predicate) .findFirst() .orElse(null); }
@Override protected void handleEPackage(EPackage ePackage, Set<EPackage> visited) { visited.add(ePackage); for (Iterator<EObject> it = ePackage.eAllContents(); it.hasNext();) { EObject content = it.next(); collectCrossReferences(content, visited); } }
@Override protected void handleEPackage(EPackage ePackage, Set<EPackage> visited) { visited.add(ePackage); for (Iterator<EObject> it = ePackage.eAllContents(); it.hasNext();) { EObject content = it.next(); collectCrossReferences(content, visited); } }
private void buildCache(DatabindContext ctxt) { ResourceSet resourceSet = EMFContext.getResourceSet(ctxt); Set<EClass> types = resourceSet.getPackageRegistry().values().stream() .flatMap(model -> stream(spliteratorUnknownSize(((EPackage) model).eAllContents(), ORDERED), false)) .filter(e -> e instanceof EClass) .map(e -> (EClass) e) .collect(Collectors.toSet()); types.forEach(type -> cache.put(type, construct(ctxt, type))); }
private void buildCache(DatabindContext ctxt) { ResourceSet resourceSet = EMFContext.getResourceSet(ctxt); Set<EClass> types = resourceSet.getPackageRegistry().values().stream() .flatMap(model -> stream(spliteratorUnknownSize(((EPackage) model).eAllContents(), ORDERED), false)) .filter(e -> e instanceof EClass) .map(e -> (EClass) e) .collect(Collectors.toSet()); types.forEach(type -> cache.put(type, construct(ctxt, type))); }
private static Set<EClass> initAllTypes(DatabindContext ctxt) { EPackage.Registry global = EPackage.Registry.INSTANCE; ResourceSet resourceSet = getResourceSet(ctxt); EPackage.Registry local = resourceSet.getPackageRegistry(); Map<String, Object> registry = new HashMap<>(); registry.putAll(global); registry.putAll(local); Set<EClass> types = registry.values().stream() .flatMap(e -> stream(spliteratorUnknownSize(((EPackage) e).eAllContents(), ORDERED), false)) .filter(e -> e instanceof EClass) .map(e -> (EClass) e) .collect(Collectors.toSet()); ctxt.setAttribute(Internals.ALL_TYPES, types); return types; }
/** * "Flattens" the given collection of {@link EPackage}s by iterating recursively over their sub-packages and * throwing all encountered packages into a set. * * @param ePackages * The EPackages to flatten. Must not be <code>null</code>. May be empty. * @return A set containing the given EPackage, plus all of its sub-EPackages (recursively). Never <code>null</code> * , may be empty. */ public static Set<EPackage> flattenEPackages(final Iterator<? extends EPackage> ePackages) { checkNotNull(ePackages, "Precondition violation - argument 'ePackages' must not be NULL!"); Set<EPackage> flattenedEPackages = Sets.newHashSet(); while (ePackages.hasNext()) { EPackage rootEPackage = ePackages.next(); flattenedEPackages.add(rootEPackage); TreeIterator<EObject> eAllContents = rootEPackage.eAllContents(); eAllContents.forEachRemaining(eObject -> { if (eObject instanceof EPackage) { flattenedEPackages.add((EPackage) eObject); } }); } return flattenedEPackages; }
private static Set<EClass> initAllTypes(DatabindContext ctxt) { EPackage.Registry global = EPackage.Registry.INSTANCE; ResourceSet resourceSet = getResourceSet(ctxt); EPackage.Registry local = resourceSet.getPackageRegistry(); Map<String, Object> registry = new HashMap<>(); registry.putAll(global); registry.putAll(local); Set<EClass> types = registry.values().stream() .flatMap(e -> stream(spliteratorUnknownSize(((EPackage) e).eAllContents(), ORDERED), false)) .filter(e -> e instanceof EClass) .map(e -> (EClass) e) .collect(Collectors.toSet()); ctxt.setAttribute(Internals.ALL_TYPES, types); return types; }
/** * "Flattens" the given collection of {@link EPackage}s by iterating recursively over their sub-packages and * throwing all encountered packages into a set. * * @param ePackages * The EPackages to flatten. Must not be <code>null</code>. May be empty. * @return A set containing the given EPackage, plus all of its sub-EPackages (recursively). Never <code>null</code> * , may be empty. */ public static Set<EPackage> flattenEPackages(final Iterable<? extends EPackage> ePackages) { checkNotNull(ePackages, "Precondition violation - argument 'ePackages' must not be NULL!"); Set<EPackage> flattenedEPackages = Sets.newHashSet(); for (EPackage rootEPackage : ePackages) { flattenedEPackages.add(rootEPackage); TreeIterator<EObject> eAllContents = rootEPackage.eAllContents(); eAllContents.forEachRemaining(eObject -> { if (eObject instanceof EPackage) { flattenedEPackages.add((EPackage) eObject); } }); } return flattenedEPackages; }
public static List<EClass> allSubTypes(DeserializationContext ctxt, EClass eClass) { final List<EClass> subTypes = new ArrayList<>(); if (eClass == null) { return subTypes; } EPackage ePackage = eClass.getEPackage(); while (ePackage.getESuperPackage() != null) { ePackage = ePackage.getESuperPackage(); } subTypes.add(eClass); for (Iterator<EObject> it = ePackage.eAllContents(); it.hasNext(); ) { EObject current = it.next(); if (current instanceof EClass) { EClass currentClass = (EClass) current; if (!currentClass.isAbstract() && eClass.isSuperTypeOf(currentClass)) { subTypes.add(currentClass); } } } return subTypes; }
public static List<EClass> allSubTypes(DeserializationContext ctxt, EClass eClass) { final List<EClass> subTypes = new ArrayList<>(); if (eClass == null) { return subTypes; } EPackage ePackage = eClass.getEPackage(); while (ePackage.getESuperPackage() != null) { ePackage = ePackage.getESuperPackage(); } subTypes.add(eClass); for (Iterator<EObject> it = ePackage.eAllContents(); it.hasNext(); ) { EObject current = it.next(); if (current instanceof EClass) { EClass currentClass = (EClass) current; if (!currentClass.isAbstract() && eClass.isSuperTypeOf(currentClass)) { subTypes.add(currentClass); } } } return subTypes; }
@Override public boolean isGeneratedCodeAvailable(EPackage ePackage, ResourceSet set) { if (getProvidedMetamodels().contains(ePackage.getNsURI())) { Iterator<EClassifier> it = Iterators.filter(ePackage.eAllContents(), EClassifier.class); boolean missingNameFound = false; while (!missingNameFound && it.hasNext()) { final String instanceClassName = it.next().getInstanceClassName(); missingNameFound = Strings.isNullOrEmpty(instanceClassName); } return !missingNameFound || getGenmodelRegistry().findGenPackage(ePackage.getNsURI(), set) != null; } else { return false; } }
@Override public boolean isGeneratedCodeAvailable(EPackage ePackage, ResourceSet set) { if (getProvidedMetamodels().contains(ePackage.getNsURI())) { Iterator<EClassifier> it = Iterators.filter(ePackage.eAllContents(), EClassifier.class); boolean missingNameFound = false; while (!missingNameFound && it.hasNext()) { final String instanceClassName = it.next().getInstanceClassName(); missingNameFound = Strings.isNullOrEmpty(instanceClassName); } GenPackage genPackage = getGenmodelRegistry().findGenPackage(ePackage.getNsURI(), set); return !missingNameFound || genPackage != null; } else { return false; } }
protected void getMissingPackagesHelper(List<EPackage> ePackages, List<GenPackage> genPackages) { for (int i = 0; i < genPackages.size(); ++i) { EPackage ePackage = genPackages.get(i).getEcorePackage(); if (ePackage != null) { for (Iterator<EObject> j = ePackage.eAllContents(); j.hasNext();) { EObject eObject = j.next(); for (Iterator<EObject> k = eObject.eCrossReferences().iterator(); k.hasNext(); ) { EObject o = k.next(); if (o instanceof EClassifier) { EClassifier eClassifier = (EClassifier)o; if (findGenClassifier(eClassifier) == null) { ePackages.add(eClassifier.getEPackage()); } } } } } } }
protected void getMissingPackagesHelper(List<EPackage> ePackages, List<GenPackage> genPackages) { for (GenPackage genPackage : genPackages) { EPackage ePackage = genPackage.getEcorePackage(); if (ePackage != null) { for (Iterator<EObject> j = ePackage.eAllContents(); j.hasNext();) { EObject eObject = j.next(); for (Iterator<EObject> k = eObject.eCrossReferences().iterator(); k.hasNext(); ) { EObject o = k.next(); if (o instanceof EClassifier) { EClassifier eClassifier = (EClassifier)o; if (findGenClassifier(eClassifier) == null) { ePackages.add(eClassifier.getEPackage()); } } } } } } }
public List<EAnnotation> getAllAnnotations() { List<EAnnotation> result = new UniqueEList<EAnnotation>(); EPackage ePackage = getEcorePackage(); for (TreeIterator<?> i = ePackage.eAllContents(); i.hasNext(); ) { Object object = i.next(); if (object instanceof EPackage) { i.prune(); } else if (object instanceof EAnnotation) { result.add((EAnnotation)object); i.prune(); } } return result; }
public List<EAnnotation> getAllAnnotations() { List<EAnnotation> result = new UniqueEList<EAnnotation>(); EPackage ePackage = getEcorePackage(); for (TreeIterator<?> i = ePackage.eAllContents(); i.hasNext(); ) { Object object = i.next(); if (object instanceof EPackage) { i.prune(); } else if (object instanceof EAnnotation) { result.add((EAnnotation)object); i.prune(); } } return result; }
public List<String> getAnnotationSources() { GenModel genModel = getGenModel(); List<String> result = new UniqueEList<String>(); EPackage ePackage = getEcorePackage(); for (TreeIterator<?> i = ePackage.eAllContents(); i.hasNext(); ) { Object object = i.next(); if (object instanceof EPackage) { i.prune(); } else if (object instanceof EAnnotation) { EAnnotation eAnnotation = (EAnnotation)object; String source = eAnnotation.getSource(); if (!genModel.isSuppressedAnnotation(source)) { result.add(source); } i.prune(); } } return result; }
public List<String> getAnnotationSources() { GenModel genModel = getGenModel(); List<String> result = new UniqueEList<String>(); EPackage ePackage = getEcorePackage(); for (TreeIterator<?> i = ePackage.eAllContents(); i.hasNext(); ) { Object object = i.next(); if (object instanceof EPackage) { i.prune(); } else if (object instanceof EAnnotation) { EAnnotation eAnnotation = (EAnnotation)object; String source = eAnnotation.getSource(); if (!genModel.isSuppressedAnnotation(source)) { result.add(source); } i.prune(); } } return result; }