Merge "Bug 7531 : Different ids allocated for same key"
[genius.git] / mdsalutil / mdsalutil-api / src / main / java / org / opendaylight / genius / mdsalutil / matches / MatchMetadata.java
1 /*
2  * Copyright © 2017 Red Hat, Inc. and others.
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.genius.mdsalutil.matches;
9
10 import java.math.BigInteger;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Metadata;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
14
15 /**
16  * Metadata match.
17  */
18 public class MatchMetadata extends MatchInfoHelper<Metadata, MetadataBuilder> {
19     private final BigInteger metadata;
20     private final BigInteger mask;
21
22     public MatchMetadata(BigInteger metadata, BigInteger mask) {
23         this.metadata = metadata;
24         this.mask = mask;
25     }
26
27     @Override
28     protected void applyValue(MatchBuilder matchBuilder, Metadata value) {
29         matchBuilder.setMetadata(value);
30     }
31
32     @Override
33     protected void populateBuilder(MetadataBuilder builder) {
34         builder.setMetadata(metadata).setMetadataMask(mask);
35     }
36
37     public BigInteger getMetadata() {
38         return metadata;
39     }
40
41     public BigInteger getMask() {
42         return mask;
43     }
44
45     @Override
46     public boolean equals(Object other) {
47         if (this == other) {
48             return true;
49         }
50         if (other == null || getClass() != other.getClass()) {
51             return false;
52         }
53         if (!super.equals(other)) {
54             return false;
55         }
56
57         MatchMetadata that = (MatchMetadata) other;
58
59         if (metadata != null ? !metadata.equals(that.metadata) : that.metadata != null) {
60             return false;
61         }
62         return mask != null ? mask.equals(that.mask) : that.mask == null;
63     }
64
65     @Override
66     public int hashCode() {
67         int result = super.hashCode();
68         result = 31 * result + (metadata != null ? metadata.hashCode() : 0);
69         result = 31 * result + (mask != null ? mask.hashCode() : 0);
70         return result;
71     }
72 }