構成の違いがあるカスタムドックレットの複数のインスタンスを登録する方法

デビッドM.カー

含まれているクラスのjavax.validation制約のテーブルを出力するカスタムJavadocドックレットを作成しています。基本的には機能しますが、Docletフレームワークはかなり制限があり柔軟性がないことがわかりました。

背景として、クラス内のプロパティに複数の検証制約がある可能性が非常に高いです。最初にタグレットを作成したとき、プロパティ名が同じであっても、制約ごとにテーブルに個別の行をレンダリングしました。

誰かが、同じ行の単一のプロパティのすべての制約をコンマで区切ってレンダリングするオプションが必要だとコメントしました。私は個人的にそれを望んでいるとは思っていませんでしたが、それを求めるのは合理的なことなので、それを制限する理由はありませんでした.

それで、タグレットで構成オプションを許可するのはどれほど難しいでしょうか? 私が見つけているように、かなり難しい。

まず、構成オプションをとるタグレットを定義できると思いました。それから私はそれをする方法がないことを発見しました。

さて、それで私は少しトリックを使うと思いました。

これが私のタグレットクラスからのコードのブロックです:

public static void register(Map<String, Taglet> tagletMap)  {
    ValidationConstraintsTaglet taglet  = new ValidationConstraintsTaglet();
    registerInstance(tagletMap, taglet, taglet.getName());
    //ValidationConstraintsTaglet tagletCombined  = new ValidationConstraintsTaglet().combineConstraints(true);
    //registerInstance(tagletMap, tagletCombined, taglet.getName() + "Combined");
}

private static void registerInstance(Map<String, Taglet> tagletMap, Taglet taglet, String name) {
    if (tagletMap.get(name) != null) {
        tagletMap.remove(name);
    }
    tagletMap.put(name, taglet);
}

このようなコードでは、制約ごとに1行をレンダリングして、完全に正常に機能します。

コメントアウトされた2行でコメントを返した場合、これは、タグレットの2番目のインスタンスを別の名前で登録し、名前の末尾に「Combined」を追加しようとする試みです。「toString(Tag)」メソッドでは、その「isCombinedConstraints」オプションをチェックして、単一のプロパティのすべての制約を1行にレンダリングします。「combinedConstraints」がデフォルトで設定されている場合、この機能が機能することを確認しました。

したがって、これらの 2 行にコメントを付けてこれを実行すると、複雑なエラーが発生します。

javadoc: error - com.sun.tools.doclets.internal.toolkit.util.DocletAbortException: java.lang.ClassCastException: com.att.det.taglet.ValidationConstraintsTaglet cannot be cast to com.sun.tools.doclets.internal.toolkit.taglets.Taglet

それが私が得るすべての情報です。これがどこで起こっているのかを教えてくれるスタックトレースもありません。

私が最初にこれを見たとき、私はこれを引き起こすであろう何かを同時に変更したに違いないと思いました。次に、2 つの新しい行をコメントアウトして再テストすると、エラーはなくなりました。

デビッドM.カー

私はこのアプローチを断念しました。それを機能させることができず、ここで応答が得られなかったためです。

私がしなければならないのは、独自の「register」メソッドと異なるタグ名を使用して、サブクラスに構成変更を実装することです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Kubernetesに複数のカスタムメトリックAPIを登録する

分類Dev

tf操作で構成される操作のカスタムグラディエントを登録する方法

分類Dev

チェックリストボックスでフィルタリングされた複数のレコードを登録する方法

分類Dev

WordPressGutenbergが複数のカスタムブロックを登録

分類Dev

カスタム登録されたブロックをグーテンベルクの別のカスタムブロックにインポートする

分類Dev

複数のスレッドがcppでシングルトンクラスインスタンスを同時に使用しないようにする方法

分類Dev

ボットフレームワークボットのカスタムエンドポイントを構成する

分類Dev

Omnitureカスタムリンクトラッキング-複数のイベントを追跡する方法

分類Dev

Magento:静的ブロックウィジェットのカスタムテンプレートファイルを登録する

分類Dev

Magento:静的ブロックウィジェットのカスタムテンプレートファイルを登録する

分類Dev

インデックスに登録されているドキュメントの総数を取得する方法はありますか

分類Dev

このタイプを処理するには、カスタムコーデックまたはPojoCodecを明示的に構成および登録する必要がある場合があります。

分類Dev

AWSは、SSL構成でスタックしているGoogleドメインへのカスタムドメイン接続を増幅します

分類Dev

ジェネリック型を複数のコンストラクターに登録する

分類Dev

複数のネットワークインターフェースの構成を支援する

分類Dev

複数のネットワークインターフェースの構成を支援する

分類Dev

各スレッドのすべての構成をログに記録するJava kafkaクライアント

分類Dev

リストのリストをインデックスに登録する方法

分類Dev

アスタリスクのインスタントメッセージングを構成する方法

分類Dev

フラグメント内のカスタムArrayadpterを使用してリストビューのクリックを登録する方法

分類Dev

CastleWindsor-同じ汎用ファクトリメソッドで複数のインターフェイスを登録する

分類Dev

複数のインデックスデータフレームにある場合にカウント

分類Dev

複数のセッションでエクスプレスとパスポートを構成する方法

分類Dev

バックグラウンドスレッドでQFileSystemModelのカスタムアイコンを作成する方法

分類Dev

構成ファイルからサーキットブレーカのインスタンスを取得する

分類Dev

Pythonで複数のインデックスを持つデータフレームのスタックプロットを作成する方法は?

分類Dev

ハイチャートの複数のティックにまたがるカスタムコンテンツを追加する方法

分類Dev

カスタムフラッシュセッションデータを使用した登録後のLaravelカスタムリダイレクト

分類Dev

uwp バックグラウンド タスクの登録を解除する

Related 関連記事

  1. 1

    Kubernetesに複数のカスタムメトリックAPIを登録する

  2. 2

    tf操作で構成される操作のカスタムグラディエントを登録する方法

  3. 3

    チェックリストボックスでフィルタリングされた複数のレコードを登録する方法

  4. 4

    WordPressGutenbergが複数のカスタムブロックを登録

  5. 5

    カスタム登録されたブロックをグーテンベルクの別のカスタムブロックにインポートする

  6. 6

    複数のスレッドがcppでシングルトンクラスインスタンスを同時に使用しないようにする方法

  7. 7

    ボットフレームワークボットのカスタムエンドポイントを構成する

  8. 8

    Omnitureカスタムリンクトラッキング-複数のイベントを追跡する方法

  9. 9

    Magento:静的ブロックウィジェットのカスタムテンプレートファイルを登録する

  10. 10

    Magento:静的ブロックウィジェットのカスタムテンプレートファイルを登録する

  11. 11

    インデックスに登録されているドキュメントの総数を取得する方法はありますか

  12. 12

    このタイプを処理するには、カスタムコーデックまたはPojoCodecを明示的に構成および登録する必要がある場合があります。

  13. 13

    AWSは、SSL構成でスタックしているGoogleドメインへのカスタムドメイン接続を増幅します

  14. 14

    ジェネリック型を複数のコンストラクターに登録する

  15. 15

    複数のネットワークインターフェースの構成を支援する

  16. 16

    複数のネットワークインターフェースの構成を支援する

  17. 17

    各スレッドのすべての構成をログに記録するJava kafkaクライアント

  18. 18

    リストのリストをインデックスに登録する方法

  19. 19

    アスタリスクのインスタントメッセージングを構成する方法

  20. 20

    フラグメント内のカスタムArrayadpterを使用してリストビューのクリックを登録する方法

  21. 21

    CastleWindsor-同じ汎用ファクトリメソッドで複数のインターフェイスを登録する

  22. 22

    複数のインデックスデータフレームにある場合にカウント

  23. 23

    複数のセッションでエクスプレスとパスポートを構成する方法

  24. 24

    バックグラウンドスレッドでQFileSystemModelのカスタムアイコンを作成する方法

  25. 25

    構成ファイルからサーキットブレーカのインスタンスを取得する

  26. 26

    Pythonで複数のインデックスを持つデータフレームのスタックプロットを作成する方法は?

  27. 27

    ハイチャートの複数のティックにまたがるカスタムコンテンツを追加する方法

  28. 28

    カスタムフラッシュセッションデータを使用した登録後のLaravelカスタムリダイレクト

  29. 29

    uwp バックグラウンド タスクの登録を解除する

ホットタグ

アーカイブ