public void loadSemanticModule(String moduleLocation) {
    URL url = ConfFileUtils.getURL(moduleLocation, this.classLoader, getClass());
    if (url == null) {
      throw new IllegalArgumentException(moduleLocation + " is specified but cannot be found.'");
    }

    Properties properties = ConfFileUtils.getProperties(url);
    if (properties == null) {
      throw new IllegalArgumentException(moduleLocation + " is specified but cannot be found.'");
    }

    loadSemanticModule(properties);
  }
  private void loadProcessNodeBuilderRegistry(String factoryLocation) {
    String content =
        ConfFileUtils.URLContentsToString(
            ConfFileUtils.getURL(factoryLocation, null, RuleBaseConfiguration.class));

    Map<Class<? extends Node>, ProcessNodeBuilder> map =
        (Map<Class<? extends Node>, ProcessNodeBuilder>) MVEL.eval(content, new HashMap());

    if (map != null) {
      for (Entry<Class<? extends Node>, ProcessNodeBuilder> entry : map.entrySet()) {
        this.nodeBuilderRegistry.register(entry.getKey(), entry.getValue());
      }
    }
  }