Moving common polling code into HttpOperation
[policy/models.git] / models-interactions / model-actors / actorServiceProvider / src / main / java / org / onap / policy / controlloop / actorserviceprovider / topic / SelectorKey.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP
4  * ================================================================================
5  * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.controlloop.actorserviceprovider.topic;
22
23 import java.util.Arrays;
24 import lombok.EqualsAndHashCode;
25 import org.onap.policy.common.utils.coder.StandardCoderObject;
26
27 /**
28  * Selector key, which contains a hierarchical list of Strings and Integers that are used
29  * to extract the content of a field, typically from a {@link StandardCoderObject}.
30  */
31 @EqualsAndHashCode
32 public class SelectorKey {
33
34     /**
35      * Names and indices used to extract the field's value.
36      */
37     private final Object[] fieldIdentifiers;
38
39     /**
40      * Constructs the object.
41      *
42      * @param fieldIdentifiers names and indices used to extract the field's value
43      */
44     public SelectorKey(Object... fieldIdentifiers) {
45         this.fieldIdentifiers = fieldIdentifiers;
46     }
47
48     /**
49      * Extracts the given field from an object.
50      *
51      * @param object object from which to extract the field
52      * @return the extracted value, or {@code null} if the object does not contain the
53      *         field
54      */
55     public String extractField(StandardCoderObject object) {
56         return object.getString(fieldIdentifiers);
57     }
58
59     @Override
60     public String toString() {
61         return Arrays.toString(fieldIdentifiers);
62     }
63 }