Skip to content

Commit

Permalink
Merge pull request #216 from LorenzoBettini/task_215-Clear_the_derive…
Browse files Browse the repository at this point in the history
…d_state

Task 215 clear the derived state
  • Loading branch information
LorenzoBettini committed Jun 30, 2020
2 parents 3ea3541 + 3acf7ae commit 7cda44c
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
Expand Up @@ -27,7 +27,7 @@
@Singleton
public class EdeltaDerivedStateComputer extends JvmModelAssociator {
@Inject
private EdeltaDerivedStateHelper derivedState;
private EdeltaDerivedStateHelper derivedStateHelper;

@Inject
private IReferableElementsUnloader.GenericUnloader unloader;
Expand All @@ -42,7 +42,7 @@ public class EdeltaDerivedStateComputer extends JvmModelAssociator {
private EdeltaOriginalENamedElementRecorder originalENamedElementRecorder;

private EdeltaCopiedEPackagesMap getCopiedEPackagesMap(final Resource resource) {
return this.derivedState.getCopiedEPackagesMap(resource);
return derivedStateHelper.getCopiedEPackagesMap(resource);
}

@Override
Expand All @@ -55,7 +55,7 @@ public void installDerivedState(final DerivedStateAwareResource resource, final
if (modifyEcoreOperations.isEmpty()) {
return;
}
final var copiedEPackagesMap = this.getCopiedEPackagesMap(resource);
final var copiedEPackagesMap = getCopiedEPackagesMap(resource);
// make sure packages under modification are copied
copyEPackages(modifyEcoreOperations.stream()
.map(EdeltaModifyEcoreOperation::getEpackage)
Expand All @@ -78,7 +78,7 @@ protected void copyEPackages(List<EPackage> packages, EdeltaCopiedEPackagesMap c
}

protected void runInterpreter(final EdeltaProgram program, final EdeltaCopiedEPackagesMap copiedEPackagesMap) {
this.interpreterFactory.create(program.eResource()).evaluateModifyEcoreOperations(program, copiedEPackagesMap);
interpreterFactory.create(program.eResource()).evaluateModifyEcoreOperations(program, copiedEPackagesMap);
}

protected void recordEcoreReferenceOriginalENamedElement(final Resource resource) {
Expand All @@ -92,18 +92,19 @@ protected void recordEcoreReferenceOriginalENamedElement(final Resource resource

@Override
public void discardDerivedState(final DerivedStateAwareResource resource) {
final var copiedEPackagesMap = this.getCopiedEPackagesMap(resource);
final var copiedEPackagesMap = getCopiedEPackagesMap(resource);
final var derivedState = derivedStateHelper.getOrInstallAdapter(resource);
unloadDerivedPackages(copiedEPackagesMap);
super.discardDerivedState(resource);
copiedEPackagesMap.clear();
derivedState.clear();
}

/**
* Unload (turn them into proxies) all derived Ecore elements
*/
protected void unloadDerivedPackages(final EdeltaCopiedEPackagesMap copiedEPackagesMap) {
for (final var p : copiedEPackagesMap.values()) {
this.unloader.unloadRoot(p);
unloader.unloadRoot(p);
}
}
}
Expand Up @@ -40,4 +40,12 @@ public EdeltaENamedElementXExpressionMap getEnamedElementXExpressionMap() {
public EdeltaUnresolvedEcoreReferences getUnresolvedEcoreReferences() {
return unresolvedEcoreReferences;
}

public void clear() {
copiedEPackagesMap.clear();
ecoreReferenceStateMap.clear();
ecoreReferenceExpressionStateMap.clear();
enamedElementXExpressionMap.clear();
unresolvedEcoreReferences.clear();
}
}

0 comments on commit 7cda44c

Please sign in to comment.