protected void clearInternalState() { for (EObject content : getContents()) { unload(content); } getContents().clear(); clearErrorsAndWarnings(); this.parseResult = null; }
public <Result> Result useTemporaryResource( ResourceSet resourceSet, Grammar language, AbstractRule rootRule, String content, IUnitOfWork<Result, XtextResource> runnable) { XtextResource resource = languageRegistry.createTemporaryResourceIn(language, resourceSet); if (rootRule != null) PartialParser.assignRootRule(resource, (ParserRule) rootRule); try { resource.load(new StringInputStream(content, resource.getEncoding()), null); return runnable.exec(resource); } catch(Exception e) { throw new RuntimeException(e); } finally { if (resource != null) { if (resource.isLoaded()) resource.unload(); resourceSet.getResources().remove(resource); } } }
/** * @param oldParseResult the previous parse result that should be detached if necessary. * @param newParseResult the current parse result that should be attached to the content of this resource * @since 2.1 */ protected void updateInternalState(IParseResult oldParseResult, IParseResult newParseResult) { if (oldParseResult != null && oldParseResult.getRootASTElement() != null && oldParseResult.getRootASTElement() != newParseResult.getRootASTElement()) { EObject oldRootAstElement = oldParseResult.getRootASTElement(); if (oldRootAstElement != newParseResult.getRootASTElement()) { unload(oldRootAstElement); getContents().remove(oldRootAstElement); } } updateInternalState(newParseResult); }