問題タブ [aspect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - アスペクトでのメソッド実行のキャンセル (「前」でキャッチされたもの)
基本的に、ある側面でメソッドの実行をキャンセルしようとしています。だから、ここに私のプログラムがあります:私は持っています
送信側アプリケーション
受信側アプリケーション (セントラル モニターと呼びましょう)
送信者アプリで: 私は、
- アクティビティ (このアクティビティには callMethodA ()というメソッドがあります)
- 側面 (この側面では、 callMethodA() 実行の前にキャッチし、この構造の前に Service を開始しています)
- A Service (このサービスが開始されると、基本的に文字列をブロードキャストで受信アプリに送信します)
レシーバーアプリで:私は持っています:
- アクティビティ (文字列が送信者アプリによってブロードキャストされると、ブロードキャスト受信者によってブロードキャストを受信し、文字列をオートマトンに入れます。オートマトンは何らかの条件をチェックし、オートマトンが完了すると、結果文字列が送信者アプリにブロードキャストされます)
だからここに私の実際の質問があります:
送信者アプリが結果文字列を (送信者のアクティビティで) 受信したとき、結果が成功の場合、callMethodA() の実行を許可したいと思います ( callMethodA()の実行をキャッチしたため、これは単に何もしないことで実行できます)。前に何もしないと、このメソッドが実行されます。)しかし、結果が FAIL の場合は、このメソッドを実行しないで、プログラム全体を実行し続けたいです (つまり、このブロードキャスト結果のcallMethodA( )は実行しなくてもいいです.オートマトンの結果に応じて次のブロードキャスト結果で実行できます.)また、アスペクトでキャンセルしたいです.
簡単に言えば、アスペクトでメソッドの実行をキャンセルする方法を教えてください。
Sender Appコードは次のとおりです。
Sender1Activity.java
送信者サービス.java
Test.aj (送信側のアスペクト)
以下のレシーバーアプリケーションコード:
ReceiverActivity.java
logging - すべてのメソッド/関数の開始後に Groovy でトレースする
In Groovyと同じ質問が ありました。すべてのクラスをデコレートしてトレースを追加する方法はありますか? しかし、この回答は現在数年前のものであるため、メソッドの実行前、実行後、またはその前後でコードを実行するためのより優れた簡単な方法があるかどうかを知りたいと思いました。次のような注釈が付いたものが好きです
また
そのため、bar() を呼び出すと、"in bar" が出力される前に (TraceLog Aspect または類似のコードで定義された) いくつかのコードが実行されます。それはまだgroovyで可能ですか?
c# - 単体テスト用に PostSharp アスペクトを偽のアスペクトに置き換える方法
次のようなクラスがあります。
PostSharpからLogAttribute
のOnMethodBoundaryAspect
ものです。のすべてのインスタンスを、実行中のアスペクトコードとは無関係にLogAttribute
ユニットテストできるように、何もしないフェイク/モックバージョンのアスペクトに交換したいと考えています。SomeClass
統合テスト中はアスペクトを正常に機能させておきます。これに似たものを達成する方法を知っている人はいますか?
このプロジェクトは単体テストに Moq を使用し、単体テスト プロジェクトの外部で DI に Ninject を使用していることに注意してください。
ありがとう!
spring-aop - 春のアスペクト再帰呼び出し
カスタム例外をスローした後、この例外がスローされた同じ引数でメソッドを再度呼び出す必要があるアスペクトを作成する必要がありますが、メソッドの再帰呼び出しは 5 回を超えてはなりません。それは可能ですか?
c# - Postsharp get インターセプト メソッドの戻り値の型
インターセプトされたメソッドの戻り値の型を取得するにはどうすればよいですか? メソッド レベルのキャッシュ メカニズムを作成しており、postsharp を使用してメソッド呼び出しをインターセプトしたいと考えています。ただし、保存したオブジェクトを元のメソッド型にキャストできる必要があります。
perl - プロダクション スクリプトの Perl テスト ラッパー
テスト目的で、元のスクリプトを変更せずに既存のスクリプトに機能を追加できるラッピング スクリプトを作成したいと考えています。私の質問は、これは perl で可能ですか、どうすればよいですか?
ラッパー スクリプトは次のようなことを行います。
プロダクション スクリプトは変更されず、完全にスタンドアロンになります。
もちろん、診断とアスペクト ウィービングが製品コードで機能することを望んでいます。私はすでにいくつかの簡単なことを試しましたが、それらは機能せず、コードも実行されませんでした。
annotations - Aspect に基づく Spring AOP から HTTP ステータス 400 を返す
私には興味深い問題があります (少なくとも、私の現在の観点からは問題です)。
インターフェイスを公開している RESTful Web サービスがあります。私たちの環境では、アノテーションを使用してリクエストハンドラーを装飾します。
CXF インターセプター/アスペクト (Spring AOP) をハンドラーの前に (上記のように) 実行し、HttpServletRequest でトークンの種類を確認する必要があります。トークン タイプ (またはハンドラーを装飾しているその他の属性) がアノテーションで指定されたタイプでない場合、実行を停止し、HTTP ステータス 400 (不正な要求) を返します。上記のような約 20 の要求ハンドラーがあります。
ここで私が直面している問題は、アスペクトに基づいたスプリング AOP を作成した後 (以下のように)、getRecordInfo() が実行される前にリクエストをキャッチできますが、400 を返そうとすると (または) 例外をスローしようとすると、HTTPクライアントにはまだ 200 が表示されます -
ログ ファイルを確認したところ、リクエスト ハンドラとアスペクトの両方が呼び出されていることを確認する次のログ エントリが表示されます。
メッセージにもかかわらず、クライアントには 200 が表示され、サーバー ログには他の CXF ベースのインターセプターが実行されている証拠が示されます。
ポイントカットを定義しているSpringコンテキストXMLは次のとおりです-
この場合、Spring AOP アスペクトを使用して HTTP 400 を返し、他のインターセプターの実行をキャンセルするにはどうすればよいですか?
また、Apache CXF インターセプターを作成して呼び出しをキャッチし、リクエスト ハンドラーに到達する前に 400 を返すことも検討していましたが、よくわかりません。リクエストハンドラの装飾。CXFインターセプターは、最終的にどのリクエストハンドラーが実行されるかを知る方法を提供していますか?
ここ ( https://cxf.apache.org/docs/interceptors.html ) を見ていましたが、とにかく見つかりませんでした。
どんな助けでも大歓迎です。
よろしく、
(*Vipul)() ;
weblogic - AspectJ と weblogic
LTW を使用して Weblogic で AspectJ を実行しようとしています。私のポイントカットは public コンストラクターとメソッド用であり、アドバイスは Before、AfterReturning、および AfterThrowing 用です。単純な「Hello World」jsp にアクセスすると、次のエラーが発生します。
ここに私の aop.xml ファイルがあります:
ここに私のアスペクトファイルがあります:
この側面は (通常の javac コンパイラを使用して) foo.jar にコンパイルされます。
以下を追加して Weblogic を実行しています。
AspectJがDefaultAspectクラスで「aspectOf()」メソッドを作成できないため、これはクラスパス/クラスローダーの問題である可能性が最も高いと思います
助けてください。