Refactor Editor REST servlet
[policy/apex-pdp.git] / client / client-editor / src / main / java / org / onap / policy / apex / client / editor / rest / handling / bean / BeanBase.java
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.client.editor.rest.handling.bean;
22
23 import java.lang.reflect.Field;
24 import java.lang.reflect.Method;
25
26 /**
27  * The base class for Beans.
28  */
29 public abstract class BeanBase {
30     // Recurring string constants
31     private static final String PROBLEM_RETRIEVING_FIELD_PREFIX = "Problem retrieving field called ('";
32     private static final String JSON_BEAN_SUFFIX = "') from JSON bean ";
33
34     /**
35      * Gets a named field from the bean.
36      *
37      * @param field the field name
38      * @return the value for the field
39      */
40     public String get(final String field) {
41         // CHECKSTYLE:OFF: MagicNumber
42         // use getter preferably
43         for (final Method method : this.getClass().getMethods()) {
44             if ((method.getName().startsWith("get")) && (method.getName().length() == (field.length() + 3))) {
45                 if (method.getName().toLowerCase().endsWith(field.toLowerCase())) {
46                     try {
47                         return (String) method.invoke(this);
48                     } catch (final Exception e) {
49                         throw new IllegalArgumentException(
50                                 PROBLEM_RETRIEVING_FIELD_PREFIX + field + JSON_BEAN_SUFFIX + this, e);
51                     }
52                 }
53             }
54         }
55         // Use field approach
56         if (field != null) {
57             try {
58                 final Field f = this.getClass().getDeclaredField(field);
59                 if (f != null) {
60                     f.setAccessible(true);
61                     return (String) (f.get(this));
62                 }
63             } catch (final Exception e) {
64                 throw new IllegalArgumentException(
65                         PROBLEM_RETRIEVING_FIELD_PREFIX + field + JSON_BEAN_SUFFIX + this, e);
66             }
67         }
68         throw new IllegalArgumentException(PROBLEM_RETRIEVING_FIELD_PREFIX + field + JSON_BEAN_SUFFIX + this);
69     }
70 }