Skip to content
Snippets Groups Projects
Commit 4270163f authored by Michael Haupt's avatar Michael Haupt
Browse files

make RContext instantiation more safe (private constructor, safety check)

parent 5599f8b6
No related branches found
No related tags found
No related merge requests found
......@@ -51,9 +51,8 @@ public final class REngine {
private REngine(String[] commandArgs, ConsoleHandler consoleHandler) {
RDefaultPackages defaultPackages = RDefaultPackages.getInstance();
this.context = new RContext(defaultPackages, commandArgs, consoleHandler);
this.context = RContext.instantiate(defaultPackages, commandArgs, consoleHandler);
defaultPackages.load(context);
}
/**
......
......@@ -99,13 +99,20 @@ public final class RContext {
return singleton;
}
public RContext(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) {
public static RContext instantiate(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) {
if (singleton != null) {
throw new IllegalStateException("RContext already instantiated.");
}
singleton = new RContext(lookup, commandArgs, consoleHandler);
return singleton;
}
private RContext(RBuiltinLookup lookup, String[] commandArgs, ConsoleHandler consoleHandler) {
this.sourceManager = new SourceManager();
this.lookup = lookup;
this.commandArgs = commandArgs;
this.consoleHandler = consoleHandler;
this.evalWarnings = null;
singleton = this;
}
public RBuiltinLookup getLookup() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment