*/
package org.opendaylight.yangtools.yang.data.impl.leafref;
-import java.util.LinkedList;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import org.opendaylight.yangtools.yang.common.QNameModule;
class QNameWithPredicateBuilder {
- private List<QNamePredicate> qnamePredicates;
+ private final List<QNamePredicate> qnamePredicates = new ArrayList<>();
private QNameModule moduleQname;
private String localName;
public QNameWithPredicateBuilder(final QNameModule moduleQname, final String localName) {
this.moduleQname = moduleQname;
this.localName = localName;
- this.qnamePredicates = new LinkedList<>();
}
public QNameWithPredicate build() {
final QNameWithPredicateImpl qNameWithPredicateImpl = new QNameWithPredicateImpl(
moduleQname, localName, qnamePredicates);
- this.qnamePredicates = new LinkedList<>();
-
+ // QNameWithPredicateImpl has taken a copy
+ qnamePredicates.clear();
return qNameWithPredicateImpl;
}
return false;
}
final QNameWithPredicateBuilder other = (QNameWithPredicateBuilder) obj;
- if (localName == null) {
- if (other.localName != null) {
- return false;
- }
- } else if (!localName.equals(other.localName)) {
- return false;
- }
- return moduleQname.equals(other.moduleQname);
+ return Objects.equals(localName, other.localName) && moduleQname.equals(other.moduleQname);
+ }
+
+ @Override
+ public int hashCode() {
+ int result = moduleQname != null ? moduleQname.hashCode() : 0;
+ result = 31 * result + Objects.hashCode(localName);
+ return result;
}
@Override