diff options
Diffstat (limited to 'models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProviderFactory.java')
-rw-r--r-- | models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProviderFactory.java | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProviderFactory.java b/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProviderFactory.java index 858b61477..7cd36a526 100644 --- a/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProviderFactory.java +++ b/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProviderFactory.java @@ -24,8 +24,7 @@ package org.onap.policy.models.provider; import javax.ws.rs.core.Response; import lombok.NonNull; import org.onap.policy.models.base.PfModelException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.onap.policy.models.dao.impl.ProxyDao; /** * A factory for creating PolicyModelsProvider objects using the default Policy Framework implementation. @@ -33,7 +32,43 @@ import org.slf4j.LoggerFactory; * @author Liam Fallon (liam.fallon@est.tech) */ public class PolicyModelsProviderFactory { - private static final Logger LOGGER = LoggerFactory.getLogger(PolicyModelsProviderFactory.class); + + /** + * Create PolicyModelsProvider. + * + * @param pfDao the ProxyDao + * @param parameters the PolicyModelsProviderParameters + * @return the PolicyModelsProvider + * @throws PfModelException on errors creating an implementation of the PolicyModelProvider + */ + public PolicyModelsProvider createPolicyModelsProvider(@NonNull final ProxyDao pfDao, + @NonNull final PolicyModelsProviderParameters parameters) throws PfModelException { + // Get the class for the PolicyModelsProvider + Class<?> implementationClass = null; + try { + // Check if the implementation class is on the classpath + implementationClass = Class.forName(parameters.getImplementation()); + } catch (final Exception exc) { + String errorMessage = "could not find implementation of the \"PolicyModelsProvider\" interface \"" + + parameters.getImplementation() + "\""; + throw new PfModelException(Response.Status.NOT_FOUND, errorMessage, exc); + } + + // It is, now check if it is a PolicyModelsProvider + if (!PolicyModelsProvider.class.isAssignableFrom(implementationClass)) { + String errorMessage = "the class \"" + implementationClass.getName() + + "\" is not an implementation of the \"PolicyModelsProvider\" interface"; + throw new PfModelException(Response.Status.BAD_REQUEST, errorMessage); + } + + try { + return (PolicyModelsProvider) implementationClass.getConstructor(ProxyDao.class).newInstance(pfDao); + } catch (Exception exc) { + String errorMessage = + "could not create an instance of PolicyModelsProvider \"" + parameters.getImplementation() + "\""; + throw new PfModelException(Response.Status.INTERNAL_SERVER_ERROR, errorMessage, exc); + } + } /** * Creates a new PolicyModelsProvider object from its implementation. @@ -51,7 +86,6 @@ public class PolicyModelsProviderFactory { } catch (final Exception exc) { String errorMessage = "could not find implementation of the \"PolicyModelsProvider\" interface \"" + parameters.getImplementation() + "\""; - LOGGER.warn(errorMessage); throw new PfModelException(Response.Status.NOT_FOUND, errorMessage, exc); } @@ -59,7 +93,6 @@ public class PolicyModelsProviderFactory { if (!PolicyModelsProvider.class.isAssignableFrom(implementationClass)) { String errorMessage = "the class \"" + implementationClass.getName() + "\" is not an implementation of the \"PolicyModelsProvider\" interface"; - LOGGER.warn(errorMessage); throw new PfModelException(Response.Status.BAD_REQUEST, errorMessage); } @@ -73,7 +106,6 @@ public class PolicyModelsProviderFactory { } catch (Exception exc) { String errorMessage = "could not create an instance of PolicyModelsProvider \"" + parameters.getImplementation() + "\""; - LOGGER.warn(errorMessage); throw new PfModelException(Response.Status.INTERNAL_SERVER_ERROR, errorMessage, exc); } } |