diff options
Diffstat (limited to 'gerrit-server/src/main/java/gerrit/PRED_change_topic_1.java')
-rw-r--r-- | gerrit-server/src/main/java/gerrit/PRED_change_topic_1.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gerrit-server/src/main/java/gerrit/PRED_change_topic_1.java b/gerrit-server/src/main/java/gerrit/PRED_change_topic_1.java new file mode 100644 index 00000000..02786e52 --- /dev/null +++ b/gerrit-server/src/main/java/gerrit/PRED_change_topic_1.java @@ -0,0 +1,54 @@ +// Copyright (C) 2011 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package gerrit; + +import com.google.gerrit.reviewdb.Change; +import com.google.gerrit.rules.PrologEnvironment; +import com.google.gerrit.rules.StoredValues; + +import com.googlecode.prolog_cafe.lang.Operation; +import com.googlecode.prolog_cafe.lang.Predicate; +import com.googlecode.prolog_cafe.lang.Prolog; +import com.googlecode.prolog_cafe.lang.PrologException; +import com.googlecode.prolog_cafe.lang.SymbolTerm; +import com.googlecode.prolog_cafe.lang.Term; + +public class PRED_change_topic_1 extends Predicate.P1 { + private static final long serialVersionUID = 1L; + + public PRED_change_topic_1(Term a1, Operation n) { + arg1 = a1; + cont = n; + } + + @Override + public Operation exec(Prolog engine) throws PrologException { + engine.setB0(); + Term a1 = arg1.dereference(); + + PrologEnvironment env = (PrologEnvironment) engine.control; + Term topicTerm = Prolog.Nil; + Change change = StoredValues.CHANGE.get(engine); + String topic = change.getTopic(); + if (topic != null) { + topicTerm = SymbolTerm.create(topic); + } + + if (!a1.unify(topicTerm, engine.trail)) { + return engine.fail(); + } + return cont; + } +}
\ No newline at end of file |