6fb38a3a90279a898786e5c1ed1f088ad6cd5488
[controller.git] / opendaylight / sal / api / src / main / java / org / opendaylight / controller / sal / core / Actions.java
1
2 /*
3  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
4  *
5  * This program and the accompanying materials are made available under the
6  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7  * and is available at http://www.eclipse.org/legal/epl-v10.html
8  */
9
10 package org.opendaylight.controller.sal.core;
11
12 import javax.xml.bind.annotation.XmlElement;
13 import javax.xml.bind.annotation.XmlRootElement;
14
15 import org.apache.commons.lang3.builder.EqualsBuilder;
16 import org.apache.commons.lang3.builder.HashCodeBuilder;
17
18 /**
19  * @file   Actions.java
20  *
21  * @brief  Class representing actions
22  *
23  * Describes supported actions
24  */
25
26 @XmlRootElement
27 public class Actions extends Property {
28         private static final long serialVersionUID = 1L;
29     @XmlElement
30     private int actionsValue;
31     
32     public enum ActionType { 
33         OUTPUT_PORT_ACTION(1<<0),
34         VLAN_VID_ACTION(1<<1),
35         VLAN_PCP_ACTION(1<<2),
36         VLAN_STRIP_ACTION(1<<3),
37         DLSRC_ACTION(1<<4),
38         DLDST_ACTION(1<<5),
39         NWSRC_ACTION(1<<6),
40         NWDST_ACTION(1<<7),
41         NWTOS_ACTION(1<<8),
42         TPTSRC_ACTION(1<<9),
43         TPTDST_ACTION(1<<10),
44         ENQUEUE_ACTION(1<<11),
45         VENDOR_ACTION(0xffff);
46         private final int at;
47         ActionType(int val) {
48                 this.at = val;
49         }
50         public int getValue() {
51                 return at;
52         }
53     }
54     
55     public static final String ActionsPropName = "actions";
56     /**
57      * Construct a actions property
58      *
59      * @param actions the actions value
60      * @return Constructed object
61      */
62     public Actions(int actions) {
63         super(ActionsPropName);
64         this.actionsValue = actions;
65     }
66
67     /*
68      * Private constructor used for JAXB mapping
69      */
70     private Actions() {
71         super(ActionsPropName);
72         this.actionsValue = 0;
73     }
74
75     public Actions clone() {
76         return new Actions(this.actionsValue);
77     }
78     
79     public int getValue() {
80         return this.actionsValue;
81     }
82     
83     
84     @Override
85     public int hashCode() {
86         return HashCodeBuilder.reflectionHashCode(this);
87     }
88
89     @Override
90     public boolean equals(Object obj) {
91         return EqualsBuilder.reflectionEquals(this, obj);
92     }
93
94     @Override
95     public String toString() {
96         return "Actions[" + actionsValue + "]";
97     }
98 }