aboutsummaryrefslogtreecommitdiffstats
path: root/models-provider/src/main/java/org/onap/policy/models/provider/PolicyModelsProviderFactory.java
diff options
context:
space:
mode:
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.java44
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);
}
}