XPath query problem bei AST

M

martymcfly

Hallo,

ich habe ein problem eine XPath query fuer einen java AST zu bauen.

der Java code ist zb
Code:
public class Test  {
     String o = "hh";
     public void wrong1() {
       synchronized(o) {
             // huhu
      }
 }
}

die XPath query soll nun alle synchronized bloecke finden, bei denen auf ein String geprueft wird.

mein problem ist nun auszudruecken: "Finde den SyncBlock, bei dem die Variable X genutzt wird, welche woanders als String definiert wurde"

Soweit kam ich bisher:
Code:
//SynchronizedStatement[ Expression/PrimaryExpression/PrimaryPrefix/Name/@Image = 
ancestor::ClassOrInterfaceBody/ClassOrInterfaceBodyDeclaration/FieldDecalaration/
VariableDeclarator/VariableDeclaratorId/@Image]

das gibt mir aus, wenn ich im SyncBlock nun eine Variable nutze, die woanders definiert wurde.

Nur wie mach ich nun noch die Abfrage rein, dass genau DIESE variable auch ein String ist ?

Auf der Ebene FieldDecalaration gibts Type -> ReferenceType -> ClassOrInterfaceType -> @Image, was mir die infos geben kann.

ich bekomms nur nicht zusammengesetzt.

Kann mir jemand da helfen ?

DANKE

achja und wir kann ich ein OR im Ausdruck integrieren
Code:
ClassOrInterfaceBodyDeclaration/{FieldDeclaration OR LocalFieldDeclartion)/VariableDeclarator/
?
 
Zurück