Add invalid object parameter for use with semantic checks
[bgpcep.git] / pcep / spi / src / main / java / org / opendaylight / protocol / pcep / spi / UnknownObject.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.spi;
9
10 import java.util.Arrays;
11 import java.util.List;
12
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.ErrorObjectBuilder;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.Errors;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcerr.message.pcerr.message.ErrorsBuilder;
17 import org.opendaylight.yangtools.yang.binding.DataContainer;
18
19 import com.google.common.base.Preconditions;
20
21 /**
22  * Placeholder object. This object should be injected by in positions where an
23  * object is either completely unknown or has failed semantic validation.
24  */
25 public final class UnknownObject implements Object {
26         private final Object invalidObject;
27         private final Errors error;
28         private final PCEPErrors e;
29
30         public UnknownObject(final PCEPErrors error) {
31                 this(error, null);
32         }
33
34         public UnknownObject(final PCEPErrors error, final Object invalidObject) {
35                 this.e = Preconditions.checkNotNull(error);
36
37                 final PCEPErrorMapping mapping = PCEPErrorMapping.getInstance();
38                 this.error = new ErrorsBuilder().setErrorObject(
39                                 new ErrorObjectBuilder().setType(mapping.getFromErrorsEnum(error).type).setValue(mapping.getFromErrorsEnum(error).value).build()).build();
40                 this.invalidObject = invalidObject;
41         }
42
43         public List<Errors> getErrors() {
44                 return Arrays.asList(this.error);
45         }
46
47         public PCEPErrors getError() {
48                 return this.e;
49         }
50
51         public Object getInvalidObject() {
52                 return this.invalidObject;
53         }
54
55         @Override
56         public Class<? extends DataContainer> getImplementedInterface() {
57                 return Object.class;
58         }
59
60         @Override
61         public Boolean isIgnore() {
62                 return false;
63         }
64
65         @Override
66         public Boolean isProcessingRule() {
67                 return false;
68         }
69 }