TypeRef getTypeRef(EClassifier classifier) { TypeRef result = XtextFactory.eINSTANCE.createTypeRef(); result.setClassifier(classifier); EPackage pack = classifier.getEPackage(); for(AbstractMetamodelDeclaration decl: GrammarUtil.allMetamodelDeclarations(grammar)) { if (pack.equals(decl.getEPackage())) { result.setMetamodel(decl); return result; } } return result; }
EDataType dataType = GrammarUtil.findEString(GrammarUtil.getGrammar(object)); if (dataType != null) typeRef.setClassifier(dataType); else { typeRef.setClassifier(EcorePackage.Literals.ESTRING);
TypeRef getTypeRef(String qualifiedName) { TypeRef result = XtextFactory.eINSTANCE.createTypeRef(); String[] split = qualifiedName.split("::"); String name = qualifiedName; if (split.length > 1) { result.setMetamodel(findMetamodel(grammar, split[0], split[1])); name = split[1]; } else { result.setMetamodel(findDefaultMetamodel(grammar, qualifiedName)); } if (result.getMetamodel() instanceof ReferencedMetamodel && result.getMetamodel().getEPackage() != null) { result.setClassifier(result.getMetamodel().getEPackage().getEClassifier(name)); } return result; }
@Override public EClassifier caseTypeRef(TypeRef object) { if (object.getClassifier() == null) { if (object.getMetamodel() == null || object.getMetamodel().getEPackage() == null) return null; String name = GrammarUtil.getTypeRefName(object); if (Strings.isEmpty(name)) return null; EClassifierInfo info = classifierInfos.getInfo(object.getMetamodel(), name); if (info != null) object.setClassifier(info.getEClassifier()); } return object.getClassifier(); }
classifier.setName(classifierName); generatedEPackage.getEClassifiers().add(classifier); typeRef.setClassifier(classifier); return result; typeRef.setClassifier(classifier); SourceAdapter.adapt(classifier, typeRef); return eClassifierInfos.getInfo(classifier);