Fahren Sie mit variablen Argumenten mit AspectJ fort

9

Ich versuche, URIs über eine Anwendung mit AspectJ zu normalisieren. Ich fange jeden Aufruf, der an eine Methode gestellt wird, die einen java.net.URI-Parameter mit diesem Code übergibt:

%Vor%

Da jedoch URI unveränderbar ist, kann ich den normalisierten Wert nicht in das vorhandene Objekt einlagern. Was ich brauche, ist, mit den neuen, normalisierten URI-Objekten fortzufahren (und möglicherweise die anderen Argumente unverändert weiterzugeben). Mit dem Prozeduraufruf können jedoch nur Argumente übergeben werden, die vom Joinpoint gesammelt wurden. Gibt es eine Möglichkeit, dies für eine variable Anzahl von Argumenten zu erreichen (meistens interessiert an jedem URI Argument, aber bereit, alle Argumente zu sammeln und weiterzugeben)?

    
Adam 30.08.2011, 14:14
quelle

3 Antworten

3

Sie müssen die Unterschrift Ihres Ratgebers ändern:

%Vor%

Update: Der obige Code funktioniert leider nicht. Aber das sollte:

%Vor%     
Sean Patrick Floyd 30.08.2011 14:19
quelle
1

Was folgt, sollte ein Kommentar sein, nicht eine vollständige Antwort, aber mein eingeschränkter Repräsentant erlaubt mir nicht zu kommentieren ...

Der Code in der Frage und auch in der Antwort von Sean Patrick Floyd wird nicht funktionieren, weil es nur ein Vorkommen des Platzhalters ".." in einem Methodensignaturmuster geben kann. Eine kurze Erklärung, warum das so ist, finden Sie hier .

    
Raul Bertone 03.05.2013 09:23
quelle
0

Ich weiß, das ist eine alte Frage, aber offiziell noch ungelöst. Ich habe es gerade gesehen, also werde ich es beantworten:

Sie haben erwähnt, dass URIs unveränderlich sind. Im Grunde ist dies ein Hinweis auf die richtige Lösung: Abfangen von Objekten (Konstruktoraufruf) und Überprüfen des Ergebnisses in around() advice. Wenn es in Ordnung ist, geben Sie den unveränderten URI weiter, andernfalls erstellen Sie einen neuen und korrigieren oder kanonisieren, was falsch ist.

Angenommen, diese Anwendungsklasse erstellt URIs:

%Vor%

Des Weiteren nehmen wir an, dass wir alle URIs mit einem Schema / Protokoll von "http" unsicher und damit falsch betrachten. Wir wollen das beheben, indem wir den URI durch einen anderen mit "https" ersetzen. Wir werden dies in einem Aspekt tun:

%Vor%

Ich hoffe, dies beantwortet Ihre Frage, wenn auch verspätet. Ich dachte, ich sollte die Lösung hier zur weiteren Bezugnahme durch andere Benutzer dokumentieren, die sie finden könnten.

    
kriegaex 10.08.2012 18:16
quelle

Tags und Links