X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fscl%2FGraphModuleSourceRepository.java;h=c75f7a941a55f76c2bd668b0646a5fa76f40d826;hp=10a217b9da073918575c19bacf98f2925619688e;hb=66ced93f835205135a84fea73b2fbb8e9d610f7e;hpb=593a8f75d9dbc363234002dc500c346afbeba040 diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java index 10a217b9d..c75f7a941 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java @@ -15,19 +15,25 @@ import org.simantics.db.procedure.SyncListener; import org.simantics.db.request.Read; import org.simantics.layer0.Layer0; import org.simantics.modeling.ModelingUtils; +import org.simantics.modeling.internal.Activator; +import org.simantics.scl.compiler.internal.codegen.types.JavaReferenceValidatorFactory; import org.simantics.scl.compiler.module.repository.UpdateListener; +import org.simantics.scl.compiler.module.repository.UpdateListener.Observable; import org.simantics.scl.compiler.source.ModuleSource; import org.simantics.scl.compiler.source.StringModuleSource; import org.simantics.scl.compiler.source.repository.ModuleSourceRepository; +import org.simantics.scl.osgi.internal.OsgiJavaReferenceValidatorFactory; import org.simantics.scl.runtime.SCLContext; -import org.simantics.structural2.utils.StructuralUtils; import org.simantics.scl.runtime.tuple.Tuple0; +import org.simantics.structural2.utils.StructuralUtils; import gnu.trove.procedure.TObjectProcedure; import gnu.trove.set.hash.THashSet; public enum GraphModuleSourceRepository implements ModuleSourceRepository { INSTANCE; + + private static final OsgiJavaReferenceValidatorFactory REFERENCE_VALIDATOR_FACTORY = new OsgiJavaReferenceValidatorFactory(Activator.getContext().getBundle()); @Override public ModuleSource getModuleSource(final String moduleName, UpdateListener listener) { @@ -54,15 +60,20 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { } } - static class ModuleListener implements SyncListener { + static class ModuleListener implements SyncListener, Observable { UpdateListener listener; boolean alreadyExecutedOnce; final String moduleName; public ModuleListener(UpdateListener listener, String moduleName) { this.listener = listener; + this.listener.addObservable(this); this.moduleName = moduleName; } @Override + public void removeListener(UpdateListener listener) { + listener = null; + } + @Override public boolean isDisposed() { return listener == null; } @@ -117,6 +128,11 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { e.printStackTrace(); } } + + @Override + public JavaReferenceValidatorFactory getJavaReferenceValidatorFactory() { + return REFERENCE_VALIDATOR_FACTORY; + } } static class ReadModuleSource extends UnaryRead {