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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.apex.model.basicmodel.service;
23 import org.onap.policy.apex.model.basicmodel.concepts.ApexRuntimeException;
24 import org.onap.policy.apex.model.utilities.Assertions;
27 * This class defines an abstract parameter class that acts as a base class for all parameters in Apex. The abstract parameter class holds the name of a
28 * subclass of this abstract parameter class {@link AbstractParameters}. The class of the parameter class is checked at construction and on calls to the
29 * {@link #getParameterClass()} method.
31 * @author Liam Fallon (liam.fallon@ericsson.com)
33 public abstract class AbstractParameters {
34 // The name of the parameter subclass
35 private String parameterClassName = this.getClass().getCanonicalName();
38 * Constructor, creates a parameter class that must be a subclass of {@link AbstractParameters}.
40 * @param parameterClassName the full canonical class name of the parameter class
42 public AbstractParameters(final String parameterClassName) {
44 Assertions.assignableFrom(Class.forName(parameterClassName), AbstractParameters.class);
46 catch (IllegalArgumentException | ClassNotFoundException e) {
47 throw new ApexRuntimeException(
48 "class \"" + parameterClassName + "\" not found or not an instance of \"" + this.getClass().getCanonicalName() + "\"", e);
53 * Gets the parameter class.
55 * @return the parameter class
57 @SuppressWarnings("unchecked")
58 public final Class<? extends AbstractParameters> getParameterClass() {
60 return (Class<? extends AbstractParameters>) Class.forName(parameterClassName);
62 catch (final ClassNotFoundException e) {
63 throw new ApexRuntimeException("class not found for parameter class name \"" + parameterClassName + "\"");
68 * Gets the parameter class name.
70 * @return the parameter class name
72 public final String getParameterClassName() {
73 return parameterClassName;
79 * @see java.lang.Object#toString()
82 public String toString() {
83 return "AbstractParameters [parameterClassName=" + parameterClassName + "]";