private void addKieBaseModels(
      ConfigurableListableBeanFactory beanFactory, KieModuleModelImpl kieModuleModel) {
    for (String beanDef : beanFactory.getBeanDefinitionNames()) {
      BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanDef);
      if (beanDefinition.getBeanClassName().equalsIgnoreCase(KBaseFactoryBean.class.getName())) {
        KieBaseModelImpl kBase = new KieBaseModelImpl();
        kBase.setKModule(kieModuleModel);

        kBase.setName(getPropertyValue(beanDefinition, "kBaseName"));
        kBase.setDefault("true".equals(getPropertyValue(beanDefinition, "def")));

        String packages = getPropertyValue(beanDefinition, "packages");
        if (!packages.isEmpty()) {
          for (String pkg : packages.split(",")) {
            kBase.addPackage(pkg.trim());
          }
        }

        String includes = getPropertyValue(beanDefinition, "includes");
        if (!includes.isEmpty()) {
          for (String include : includes.split(",")) {
            kBase.addInclude(include.trim());
          }
        }

        String eventMode = getPropertyValue(beanDefinition, "eventProcessingMode");
        if (!eventMode.isEmpty()) {
          kBase.setEventProcessingMode(
              EventProcessingOption.determineEventProcessingMode(eventMode));
        }

        String equalsBehavior = getPropertyValue(beanDefinition, "equalsBehavior");
        if (!equalsBehavior.isEmpty()) {
          kBase.setEqualsBehavior(EqualityBehaviorOption.determineEqualityBehavior(equalsBehavior));
        }

        String declarativeAgenda = getPropertyValue(beanDefinition, "declarativeAgenda");
        if (!declarativeAgenda.isEmpty()) {
          kBase.setDeclarativeAgenda(
              DeclarativeAgendaOption.determineDeclarativeAgenda(declarativeAgenda));
        }

        String scope = getPropertyValue(beanDefinition, "scope");
        if (!scope.isEmpty()) {
          kBase.setScope(scope.trim());
        }

        kieModuleModel.getRawKieBaseModels().put(kBase.getName(), kBase);
        beanDefinition
            .getPropertyValues()
            .addPropertyValue(new PropertyValue("releaseId", releaseId));
        addKieSessionModels(beanFactory, kBase);
      }
    }
  }
Esempio n. 2
0
  protected void indexParts(
      Collection<InternalKieModule> kieModules, Map<String, InternalKieModule> kJarFromKBaseName) {
    for (InternalKieModule kJar : kieModules) {
      KieModuleModel kieProject = kJar.getKieModuleModel();
      for (KieBaseModel kieBaseModel : kieProject.getKieBaseModels().values()) {
        if (kieBaseModel.isDefault()) {
          if (defaultKieBase == null) {
            defaultKieBase = kieBaseModel;
          } else {
            defaultKieBase = null;
            log.warn(
                "Found more than one default KieBase: disabling all. KieBases will be accessible only by name");
          }
        }

        kBaseModels.put(kieBaseModel.getName(), kieBaseModel);
        ((KieBaseModelImpl) kieBaseModel)
            .setKModule(kieProject); // should already be set, but just in case

        kJarFromKBaseName.put(kieBaseModel.getName(), kJar);
        for (KieSessionModel kieSessionModel : kieBaseModel.getKieSessionModels().values()) {
          if (kieSessionModel.isDefault()) {
            if (kieSessionModel.getType() == KieSessionModel.KieSessionType.STATEFUL) {
              if (defaultKieSession == null) {
                defaultKieSession = kieSessionModel;
              } else {
                defaultKieSession = null;
                log.warn(
                    "Found more than one default KieSession: disabling all. KieSessions will be accessible only by name");
              }
            } else {
              if (defaultStatelessKieSession == null) {
                defaultStatelessKieSession = kieSessionModel;
              } else {
                defaultStatelessKieSession = null;
                log.warn(
                    "Found more than one default StatelessKieSession: disabling all. StatelessKieSessions will be accessible only by name");
              }
            }
          }

          ((KieSessionModelImpl) kieSessionModel)
              .setKBase(kieBaseModel); // should already be set, but just in case
          kSessionModels.put(kieSessionModel.getName(), kieSessionModel);
        }
      }
    }
  }