X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-base%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Fbase%2FPfModelService.java;h=94a7c0eacfcb42402c0e4b1baaa0b355b32cba90;hb=938005505883cf7a636a8840e20e3dc8a0ad9176;hp=c02de6aa7546f6c5cbee7a410a677815a0651b45;hpb=b694be156d4b022e24347259f494ee3b46d47bdb;p=policy%2Fmodels.git diff --git a/models-base/src/main/java/org/onap/policy/models/base/PfModelService.java b/models-base/src/main/java/org/onap/policy/models/base/PfModelService.java index c02de6aa7..94a7c0eac 100644 --- a/models-base/src/main/java/org/onap/policy/models/base/PfModelService.java +++ b/models-base/src/main/java/org/onap/policy/models/base/PfModelService.java @@ -1,6 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,65 +21,63 @@ package org.onap.policy.models.base; +import jakarta.ws.rs.core.Response; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import lombok.NonNull; /** * The model service makes Policy Framework models available to all classes in a JVM. * - *

The reason for having a model service is to avoid having to pass concept and model definitions - * down long call chains in modules such as the Policy Framework engine and editor. The model - * service makes the model and concept definitions available statically. + *

The reason for having a model service is to avoid having to pass concept and model definitions down long call + * chains in modules such as the Policy Framework engine and editor. The model service makes the model and concept + * definitions available statically. * - *

Note that the use of the model service means that only a single Policy Framework model of a - * particular type may exist in Policy Framework (particularly the engine) at any time. Of course - * the model in a JVM can be changed at any time provided all users of the model are stopped and - * restarted in an orderly manner. + *

Note that the use of the model service means that only a single Policy Framework model of a particular type may + * exist in Policy Framework (particularly the engine) at any time. Of course the model in a JVM can be changed at any + * time provided all users of the model are stopped and restarted in an orderly manner. */ -public abstract class PfModelService { +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public final class PfModelService { // The map holding the models - private static Map, PfConcept> modelMap = new ConcurrentHashMap<>(); - - /** - * This class is an abstract static class that cannot be extended. - */ - private PfModelService() {} + private static final Map modelMap = new ConcurrentHashMap<>(); /** * Register a model with the model service. * - * @param the generic type - * @param modelClass the class of the model, used to index the model - * @param model The model + * @param the generic type + * @param modelKey the key of the model, used to index the model + * @param model The model */ - public static void registerModel(final Class modelClass, final M model) { - modelMap.put(modelClass, model); + public static void registerModel(@NonNull final String modelKey, @NonNull final M model) { + modelMap.put(modelKey, model); } /** * Remove a model from the model service. * - * @param the generic type - * @param modelClass the class of the model, used to index the model + * @param modelKey the key of the model, used to index the model */ - public static void deregisterModel(final Class modelClass) { - modelMap.remove(modelClass); + public static void deregisterModel(@NonNull final String modelKey) { + modelMap.remove(modelKey); } /** * Get a model from the model service. * - * @param the generic type - * @param modelClass the class of the model, used to index the model + * @param the generic type + * @param modelKey the key of the model, used to index the model * @return The model */ @SuppressWarnings("unchecked") - public static M getModel(final Class modelClass) { - final M model = (M) modelMap.get(modelClass); + public static M getModel(@NonNull final String modelKey) { + final var model = (M) modelMap.get(modelKey); if (model == null) { - throw new PfModelRuntimeException( - "Model for " + modelClass.getCanonicalName() + " not found in model service"); + throw new PfModelRuntimeException(Response.Status.INTERNAL_SERVER_ERROR, + "Model for name " + modelKey + " not found in model service"); } return model; @@ -87,12 +86,11 @@ public abstract class PfModelService { /** * Check if a model is defined on the model service. * - * @param the generic type - * @param modelClass the class of the model, used to index the model + * @param modelKey the key of the model, used to index the model * @return true if the model is defined */ - public static boolean existsModel(final Class modelClass) { - return modelMap.get(modelClass) != null; + public static boolean existsModel(final String modelKey) { + return modelMap.get(modelKey) != null; } /**