Ejemplo n.º 1
0
 /**
  * 注册规则验证器 <功能详细描述>
  *
  * @param ruleValidator [参数说明]
  * @return void [返回类型说明]
  * @exception throws [异常类型] [异常说明]
  * @see [类、类#方法、类#成员]
  */
 public void registeRuleRegister(
     @SuppressWarnings("rawtypes") Collection<RuleRegister> ruleValidators) {
   if (!CollectionUtils.isEmpty(ruleValidators)) {
     for (RuleRegister<? extends Rule> ruleRegisterTemp : ruleValidators) {
       ruleRegisterMap.put(ruleRegisterTemp.ruleType(), ruleRegisterTemp);
     }
   }
 }
Ejemplo n.º 2
0
  /**
   * 将规则注册入规则容器中 <功能详细描述>
   *
   * @param spRule [参数说明]
   * @return void [返回类型说明]
   * @exception throws [异常类型] [异常说明]
   * @see [类、类#方法、类#成员]
   */
  @Transactional
  public Rule registeRule(SimplePersistenceRule spRule) {
    if (spRule == null
        || StringUtils.isEmpty(spRule.getRule())
        || StringUtils.isEmpty(spRule.getServiceType())
        || spRule.getRuleType() == null) {
      throw new RuleRegisteException("spRule or rule or serviceType or ruleType is null");
    }

    RuleRegister<? extends Rule> ruleRegisterTemp = ruleRegisterMap.get(spRule.getRuleType());
    if (ruleRegisterTemp == null) {
      throw new RuleRegisteException(
          "ruleType:{} RuleRegister not exist.", spRule.getRuleType().toString());
    }

    // 调用对应注册器方法,将规则注册入容器中
    final Rule realRule = ruleRegisterTemp.registe(spRule);
    if (realRule != null) {
      if (TransactionSynchronizationManager.isSynchronizationActive()) {
        // 如果在事务逻辑中执行
        TransactionSynchronizationManager.registerSynchronization(
            new TransactionSynchronizationAdapter() {
              @Override
              public void afterCommit() {
                putInCache(realRule, true);
              }
            });
      } else {
        // 如果在非事务中执行
        putInCache(realRule, true);
      }
    } else {
      throw new RuleRegisteException(
          "ruleType:{} RuleRegister call registe return null realRule.",
          spRule.getRuleType().toString());
    }
    return realRule;
  }