Ejemplo n.º 1
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);
        }
      }
    }
  }