Merge "Randomize port to allow concurrent execution"
[bgpcep.git] / pcep / api / src / main / java / org / opendaylight / protocol / pcep / object / PCEPIncludeRouteObject.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  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.protocol.pcep.object;
9
10 import java.util.List;
11
12 import org.opendaylight.protocol.pcep.PCEPObject;
13 import org.opendaylight.protocol.pcep.subobject.ExplicitRouteSubobject;
14 import com.google.common.base.Objects.ToStringHelper;
15
16 /**
17  * Structure of Explicit Route Object.
18  *
19  * @see <a href="http://tools.ietf.org/html/rfc5440#section-7.12">PCEP Include
20  *      Route Object</a>
21  */
22 public class PCEPIncludeRouteObject extends PCEPObject {
23
24     private final List<ExplicitRouteSubobject> subobjects;
25
26     /**
27      * Constructs Include Route Object.
28      *
29      * @param subobjects
30      *            List<ExplicitRouteSubobject>
31      * @param processed
32      *            boolean
33      * @param ignored
34      *            boolean
35      */
36     public PCEPIncludeRouteObject(List<ExplicitRouteSubobject> subobjects, boolean processed, boolean ignored) {
37         super(processed, ignored);
38         if (subobjects == null || subobjects.isEmpty())
39             throw new IllegalArgumentException("Subobjects can't be null or empty.");
40         this.subobjects = subobjects;
41     }
42
43     /**
44      * Gets list of {@link ExplicitRouteSubobject}
45      *
46      * @return List<ExplicitRouteSubobject>. Can't be null or empty.
47      */
48     public List<ExplicitRouteSubobject> getSubobjects() {
49         return this.subobjects;
50     }
51
52     @Override
53     public int hashCode() {
54         final int prime = 31;
55         int result = super.hashCode();
56         result = prime * result + ((this.subobjects == null) ? 0 : this.subobjects.hashCode());
57         return result;
58     }
59
60     @Override
61     public boolean equals(Object obj) {
62         if (this == obj)
63             return true;
64         if (!super.equals(obj))
65             return false;
66         if (this.getClass() != obj.getClass())
67             return false;
68         final PCEPIncludeRouteObject other = (PCEPIncludeRouteObject) obj;
69         if (this.subobjects == null) {
70             if (other.subobjects != null)
71                 return false;
72         } else if (!this.subobjects.equals(other.subobjects))
73             return false;
74         return true;
75     }
76
77         @Override
78         protected ToStringHelper addToStringAttributes(ToStringHelper toStringHelper) {
79                 toStringHelper.add("subobjects", this.subobjects);
80                 return super.addToStringAttributes(toStringHelper);
81         }
82 }