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) {
}
}
- static class ModuleListener implements SyncListener<ModuleSource> {
+ static class ModuleListener implements SyncListener<ModuleSource>, 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) {
+ this.listener = null;
+ }
+ @Override
public boolean isDisposed() {
return listener == null;
}
e.printStackTrace();
}
}
+
+ @Override
+ public JavaReferenceValidatorFactory getJavaReferenceValidatorFactory() {
+ return REFERENCE_VALIDATOR_FACTORY;
+ }
}
static class ReadModuleSource extends UnaryRead<String, ModuleSource> {