*/
public RuleBackendRuntime createRuleBackendRuntime(Map<String, PropertyDescription> properties,
ClassLoader classLoader) {
String providerClassName = null;
PropertyDescription provider = properties.get("class");
if (provider != null) {
providerClassName = provider.getValue();
}
if (providerClassName == null || "".equals(providerClassName)) {
if (log.isDebugEnabled()) {
log.debug("Provided RuleServiceProviderClass is null or empty. Using default : " +
RuleConstants.DROOLS_RULE_SERVICE_PROVIDER);
}
providerClassName = RuleConstants.DROOLS_RULE_SERVICE_PROVIDER;
}
Class providerClass = null;
try {
if (log.isDebugEnabled()) {
log.debug("Trying to initialize the RuleServiceProvider " +
"with class name :" + providerClassName);
}
// RuleServiceProviderImpl will automatically registered
// via a static initialization block
providerClass = Class.forName(providerClassName);
if (log.isDebugEnabled()) {
log.debug("RuleServiceProvider has been initialized." +
" provider class : " + providerClassName);
}
} catch (ClassNotFoundException e) {
throw new LoggedRuntimeException("Error when loading RuleServiceProvider from class " +
"with the name " + providerClassName, e, log);
}
String providerUri = null;
PropertyDescription uri = properties.get("uri");
if (uri != null) {
providerUri = uri.getValue();
}
if (providerUri == null || "".equals(providerUri)) {
if (log.isDebugEnabled()) {
log.debug("Provided RuleServiceProviderURI is null or empty. Using default : " +
RuleConstants.DROOLS_RULE_SERVICE_PROVIDER_URI);
}
providerUri = RuleConstants.DROOLS_RULE_SERVICE_PROVIDER_URI;
}
try {
if (log.isDebugEnabled()) {
log.debug("Getting RuleServiceProvider using provider Url : " + providerUri);
}
RuleServiceProviderManager.registerRuleServiceProvider(
providerUri, providerClass, classLoader);
// Get the rule service provider from the provider manager.
RuleServiceProvider ruleServiceProvider =
RuleServiceProviderManager.getRuleServiceProvider(providerUri);
if (ruleServiceProvider == null) {
throw new LoggedRuntimeException("There is no RuleServiceProvider" +
" registered for Uri :" + providerUri, log);
}
RuleAdministrator ruleAdministrator = createRuleAdministrator(ruleServiceProvider);
LocalRuleExecutionSetProvider localProvider =
createLocalRuleExecutionSetProvider(ruleAdministrator);
RuleRuntime ruleRuntime = createRuleRuntime(ruleServiceProvider);
JSR94BackendRuntime jsr94BackendRuntime =
new JSR94BackendRuntime(ruleAdministrator, ruleRuntime, localProvider,
classLoader);
PropertyDescription propertyLoader =
properties.get(RuleConstants.PROP_DEFAULT_PROPERTIES_PROVIDER);
if (propertyLoader != null) {
DefaultPropertiesProvider defaultPropertiesProvider =
(DefaultPropertiesProvider) ClassHelper.createInstance(
propertyLoader.getValue().trim());
jsr94BackendRuntime.setDefaultPropertiesProvider(defaultPropertiesProvider);
}
return jsr94BackendRuntime;
} catch (ConfigurationException e) {
throw new LoggedRuntimeException("Error was occurred when getting RuleServiceProvider" +