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 final String parameterClassName;
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);
51 this.parameterClassName = parameterClassName;
55 * Gets the parameter class.
57 * @return the parameter class
59 @SuppressWarnings("unchecked")
60 public final Class<? extends AbstractParameters> getParameterClass() {
62 return (Class<? extends AbstractParameters>) Class.forName(parameterClassName);
64 catch (final ClassNotFoundException e) {
65 throw new ApexRuntimeException("class not found for parameter class name \"" + parameterClassName + "\"", e);
70 * Gets the parameter class name.
72 * @return the parameter class name
74 public final String getParameterClassName() {
75 return parameterClassName;
81 * @see java.lang.Object#toString()
84 public String toString() {
85 return "AbstractParameters [parameterClassName=" + parameterClassName + "]";