1 package org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.rule;
3 import static com.google.common.base.Preconditions.checkNotNull;
5 import javax.annotation.Nullable;
6 import javax.annotation.concurrent.Immutable;
8 import org.opendaylight.neutron.spi.NeutronSecurityRule;
9 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Description;
10 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract;
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule;
17 import com.google.common.collect.ImmutableList;
20 public class SingleRuleContract {
22 private final SingleClassifierRule singleClassifierRule;
23 private final Rule rule;
24 private final Subject subject;
25 private final Clause clause;
26 private final Contract contract;
28 public SingleRuleContract(NeutronSecurityRule secRule, int subjectAndRuleOrder, @Nullable Description contractDescription) {
29 this(secRule, new SingleClassifierRule(secRule, subjectAndRuleOrder), subjectAndRuleOrder, contractDescription);
32 public SingleRuleContract(NeutronSecurityRule secRule, SingleClassifierRule singleClassifierRule,
33 int subjectOrder, @Nullable Description contractDescription) {
34 checkNotNull(secRule);
35 this.singleClassifierRule = checkNotNull(singleClassifierRule);
36 this.rule = singleClassifierRule.getRule();
37 this.subject = new SubjectBuilder().setName(SecRuleNameDecoder.getSubjectName(secRule))
38 .setOrder(subjectOrder)
39 .setRule(ImmutableList.of(rule))
41 this.clause = SecRuleEntityDecoder.getClause(secRule);
42 this.contract = new ContractBuilder().setId(SecRuleEntityDecoder.getContractId(secRule))
43 .setSubject(ImmutableList.of(subject))
44 .setClause(ImmutableList.of(clause))
45 .setDescription(contractDescription)
49 public SingleClassifierRule getSingleClassifierRule() {
50 return singleClassifierRule;
53 public Rule getRule() {
57 public Subject getSubject() {
61 public Clause getClause() {
65 public Contract getContract() {