Merge "Fix sonars in policy models"
[policy/models.git] / models-interactions / model-actors / actorServiceProvider / src / main / java / org / onap / policy / controlloop / actorserviceprovider / DelayedIdentString.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP
4  * ================================================================================
5  * Copyright (C) 2020-2021 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;
22
23 import lombok.AllArgsConstructor;
24
25 /**
26  * Object whose {@link #toString()} method invokes {@link Object#toString()} on another
27  * object, on-demand. This assumes that the other object's method returns an object
28  * identifier. This is typically used to include an object's identifier in a log message.
29  */
30 @AllArgsConstructor
31 public class DelayedIdentString {
32     /**
33      * String to return for null objects or null object identifiers.
34      */
35     public static final String NULL_STRING = "null";
36
37     private final Object object;
38
39     /**
40      * Gets the object's identifier, after stripping anything appearing before '@'.
41      */
42     @Override
43     public String toString() {
44         if (object == null) {
45             return NULL_STRING;
46         }
47
48         var ident = objectToString();
49         if (ident == null) {
50             return NULL_STRING;
51         }
52
53         int index = ident.indexOf('@');
54         return (index > 0 ? ident.substring(index) : ident);
55     }
56
57     /**
58      * Invokes the object's {@link Object#toString()} method.
59      *
60      * @return the output from the object's {@link Object#toString()} method
61      */
62     protected String objectToString() {
63         return object.toString();
64     }
65 }