@Override public AttributedFeatureModel parseFile(String fileName) throws Exception { Injector injector = new VMStandaloneSetup().createInjectorAndDoEMFRegistration(); XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class); resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE); if (models != null) { for (String s : models) { resourceSet.getResource(URI.createURI(s), true); } } Resource resource = resourceSet.getResource(URI.createURI(fileName), true); Model model = (Model) resource.getContents().get(0); fm = new AttributedFeatureModel(); VmBlock relationships = null; VmBlock attsblock = null; VmBlock constratins = null; EList<VmBlock> bl = model.getBlocks(); for (VmBlock block : bl) { if (block instanceof Relationships) { relationships = block; } else if (block instanceof Attributes) { attsblock = block; } else if (block instanceof Constraints) { constratins = block; } else if (block instanceof PackageDeclaration) { for (VmBlock blockinpkg : ((PackageDeclaration) block).getBlocks()) { if (blockinpkg instanceof Relationships) { relationships = blockinpkg; } else if (blockinpkg instanceof Attributes) { attsblock = blockinpkg; } else if (blockinpkg instanceof Constraints) { constratins = blockinpkg; } } } } if (((Relationships) relationships) != null) { FeatureHierarchy fhs = ((Relationships) relationships).getRoot(); fr.familiar.attributedfm.Feature ffeat = new fr.familiar.attributedfm.Feature(fhs.getParent().getName()); visitFeatureHierarchy(ffeat, fhs); fm.setRoot(ffeat); } if ((Attributes) attsblock != null) { visitAttributes(((Attributes) attsblock).getAttrDefs(), fm); } if ((Constraints) constratins != null) { visitConstraints(((Constraints) constratins).getConstraints(), fm); } return fm; }