a59705c7a66c1f94ac53d8e88a0278adb34a3a81
[yangtools.git] / yang / yang-xpath-api / src / main / java / org / opendaylight / yangtools / yang / xpath / api / YangNaryExpr.java
1 /*
2  * Copyright (c) 2018 Pantheon Technologies, s.r.o.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.xpath.api;
9
10 import static java.util.Objects.requireNonNull;
11
12 import com.google.common.annotations.Beta;
13 import java.util.Objects;
14 import java.util.Set;
15 import org.eclipse.jdt.annotation.Nullable;
16
17 @Beta
18 public abstract class YangNaryExpr implements YangExpr {
19     private static final long serialVersionUID = 1L;
20
21     private final Set<YangExpr> expressions;
22
23     YangNaryExpr(final Set<YangExpr> expressions) {
24         this.expressions = requireNonNull(expressions);
25     }
26
27     public final Set<YangExpr> getExpressions() {
28         return expressions;
29     }
30
31     public abstract YangNaryOperator getOperator();
32
33     @Override
34     public final int hashCode() {
35         return Objects.hash(getOperator(), expressions);
36     }
37
38     @Override
39     public final boolean equals(final @Nullable Object obj) {
40         if (this == obj) {
41             return true;
42         }
43         if (!(obj instanceof YangNaryExpr)) {
44             return false;
45         }
46         final YangNaryExpr other = (YangNaryExpr) obj;
47         return getOperator().equals(other.getOperator()) && expressions.equals(other.expressions);
48     }
49 }