diff --git a/gerrit-server/src/main/java/com/google/gerrit/rules/PrologEnvironment.java b/gerrit-server/src/main/java/com/google/gerrit/rules/PrologEnvironment.java index e8a6b0ecd0..e6b15c16ce 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/rules/PrologEnvironment.java +++ b/gerrit-server/src/main/java/com/google/gerrit/rules/PrologEnvironment.java @@ -24,6 +24,8 @@ import com.googlecode.prolog_cafe.lang.PrologClassLoader; import com.googlecode.prolog_cafe.lang.SystemException; import com.googlecode.prolog_cafe.lang.Term; +import java.util.EnumSet; + /** * Per-thread Prolog interpreter. *
@@ -56,7 +58,7 @@ public class PrologEnvironment extends BufferingPrologControl {
setPrologClassLoader(new PrologClassLoader(newCL));
setMaxArity(8);
setMaxDatabaseSize(64);
- setEnableReflection(false);
+ setEnabled(EnumSet.allOf(Prolog.Feature.class), false);
}
/** Get the global Guice Injector that configured the environment. */
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectState.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectState.java
index fe5c140a83..653a0340a6 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectState.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/ProjectState.java
@@ -139,7 +139,7 @@ public class ProjectState {
new PushbackReader(new StringReader(rules), Prolog.PUSHBACK_SIZE);
JavaObjectTerm streamObject = new JavaObjectTerm(in);
if (!env.execute(Prolog.BUILTIN, "consult_stream",
- SymbolTerm.makeSymbol("rules.pl"), streamObject)) {
+ SymbolTerm.intern("rules.pl"), streamObject)) {
throw new CompileException("Cannot consult rules.pl " +
getProject().getName() + " " + getConfig().getRevision());
}
diff --git a/gerrit-server/src/main/java/gerrit/PRED_$load_commit_labels_1.java b/gerrit-server/src/main/java/gerrit/PRED_$load_commit_labels_1.java
index 73d32643d7..9fe6d48e9f 100644
--- a/gerrit-server/src/main/java/gerrit/PRED_$load_commit_labels_1.java
+++ b/gerrit-server/src/main/java/gerrit/PRED_$load_commit_labels_1.java
@@ -24,9 +24,9 @@ import com.googlecode.prolog_cafe.lang.Term;
/** Exports list of {@code commit_label( label('Code-Review', 2), user(12345789) )}. */
class PRED_$load_commit_labels_1 extends Predicate.P1 {
- private static final SymbolTerm sym_commit_label = SymbolTerm.makeSymbol("commit_label", 2);
- private static final SymbolTerm sym_label = SymbolTerm.makeSymbol("label", 2);
- private static final SymbolTerm sym_user = SymbolTerm.makeSymbol("user", 1);
+ private static final SymbolTerm sym_commit_label = SymbolTerm.intern("commit_label", 2);
+ private static final SymbolTerm sym_label = SymbolTerm.intern("label", 2);
+ private static final SymbolTerm sym_user = SymbolTerm.intern("user", 1);
PRED_$load_commit_labels_1(Term a1, Operation n) {
arg1 = a1;
@@ -57,7 +57,7 @@ class PRED_$load_commit_labels_1 extends Predicate.P1 {
StructureTerm labelTerm = new StructureTerm(
sym_label,
- SymbolTerm.makeSymbol(t.getCategory().getLabelName()),
+ SymbolTerm.intern(t.getCategory().getLabelName()),
new IntegerTerm(a.getValue()));
StructureTerm userTerm = new StructureTerm(
diff --git a/gerrit-server/src/main/java/gerrit/PRED_get_legacy_approval_types_1.java b/gerrit-server/src/main/java/gerrit/PRED_get_legacy_approval_types_1.java
index c8ceb62e18..cbe0fd8bf2 100644
--- a/gerrit-server/src/main/java/gerrit/PRED_get_legacy_approval_types_1.java
+++ b/gerrit-server/src/main/java/gerrit/PRED_get_legacy_approval_types_1.java
@@ -68,14 +68,14 @@ class PRED_get_legacy_approval_types_1 extends Predicate.P1 {
return cont;
}
- static final SymbolTerm symApprovalType = SymbolTerm.makeSymbol(
+ static final SymbolTerm symApprovalType = SymbolTerm.intern(
"approval_type", 5);
static Term export(ApprovalType type) {
return new StructureTerm(symApprovalType,
- SymbolTerm.makeSymbol(type.getCategory().getLabelName()),
- SymbolTerm.makeSymbol(type.getCategory().getId().get()),
- SymbolTerm.makeSymbol(type.getCategory().getFunctionName()),
+ SymbolTerm.intern(type.getCategory().getLabelName()),
+ SymbolTerm.intern(type.getCategory().getId().get()),
+ SymbolTerm.intern(type.getCategory().getFunctionName()),
new IntegerTerm(type.getMin().getValue()),
new IntegerTerm(type.getMax().getValue()));
}
diff --git a/gerrit-server/src/test/java/com/google/gerrit/rules/PrologTestCase.java b/gerrit-server/src/test/java/com/google/gerrit/rules/PrologTestCase.java
index 604fef5084..ba258bea85 100644
--- a/gerrit-server/src/test/java/com/google/gerrit/rules/PrologTestCase.java
+++ b/gerrit-server/src/test/java/com/google/gerrit/rules/PrologTestCase.java
@@ -30,12 +30,13 @@ import java.io.FileNotFoundException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.EnumSet;
import java.util.List;
/** Base class for any tests written in Prolog. */
public abstract class PrologTestCase extends TestCase {
- private static final SymbolTerm test_1 = SymbolTerm.makeSymbol("test", 1);
+ private static final SymbolTerm test_1 = SymbolTerm.intern("test", 1);
private String pkg;
private boolean hasSetup;
@@ -54,6 +55,7 @@ public abstract class PrologTestCase extends TestCase {
PrologEnvironment.Factory.class);
env = factory.create(getClass().getClassLoader());
env.setMaxDatabaseSize(16 * 1024);
+ env.setEnabled(Prolog.Feature.IO, true);
consult(getClass(), prologResource);
@@ -62,7 +64,7 @@ public abstract class PrologTestCase extends TestCase {
hasTeardown = has("teardown");
StructureTerm head = new StructureTerm(":",
- SymbolTerm.makeSymbol(pkg),
+ SymbolTerm.intern(pkg),
new StructureTerm(test_1, new VariableTerm()));
tests = new ArrayList