Uploaded image for project: 'Ymir'
  1. Ymir
  2. YMIR-298

PageクラスのBaseにアクションやプロパティのStaticFinal定義を追加

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.0.0
    • Fix Version/s: 1.0.2
    • Component/s: ymir-extension
    • Labels:
      None

      Description

      【概要】
      例えば、Conversation:

      @In(scopeClass = ConversationScope.class, actionName = "_get")
      public void setCondition(ConditionDto condition) {
          this.condition = condition;
      }
      

      というように、actionNameに「_get」と指定したりしますが、
      これはタイプセーフではなく、メソッドの変更などあったさいに追従できない。

      アクションやプロパティは基本的に必ずPageクラスのBaseに定義されているため、
      一緒に、アクションやプロパティのStaticFinal定義を追加してしまえば、
      こういったアノテーション内での指定がタイプセーフになる。

      // 例えば、PageクラスのBaseに「String ACT_get = "_get"」と定義されていれば
      @In(scopeClass = ConversationScope.class, actionName = ACT_get)
      public void setCondition(ConditionDto condition) {
          this.condition = condition;
      }
      

      Conversationだけでなく、バリデーションなどアクションやプロパティを
      アノテーション内で指定することは多いと思われ、
      Ymirにとって非常に価値の高い仕様になる。

      StringのStaticFinalでなく、独自のクラスの定義にしてもいいかも。

      // 例えば、PageクラスのBaseに「Action ACT_get = "_get"」と定義されていれば。
      // そして、@Inには「Action[] action」という属性を追加。
      @In(scopeClass = ConversationScope.class, action = ACT_get)
      public void setCondition(ConditionDto condition) {
          this.condition = condition;
      }
      

        Attachments

          Activity

            People

            • Assignee:
              skirnir skirnir
              Reporter:
              jflute jflute
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: