package org.xpect.model; import java.util.List; import java.util.Set; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.xtext.common.types.JvmDeclaredType; import org.xpect.XjmClass; import com.google.common.base.Joiner; import com.google.common.collect.Lists; import com.google.common.collect.Sets; public class XjmElementImplCustom extends XjmElementImpl { private void collectImports(XjmClass ctx, List<String> result, Set<XjmClass> visited) { if (!visited.add(ctx)) return; JvmDeclaredType jvmClass = ctx.getJvmClass(); if (jvmClass != null) { if (jvmClass.eIsProxy()) result.add("Proxy: " + ((InternalEObject) jvmClass).eProxyURI()); else result.add(jvmClass.getSimpleName()); } for (XjmClass imp : ctx.getImports()) collectImports(imp, result, visited); } public String getImportedContributions() { List<String> result = Lists.newArrayList(); Set<XjmClass> visited = Sets.newHashSet(); for (XjmClass imp : getImports()) collectImports(imp, result, visited); return Joiner.on(", ").join(result); } }