2007-07-05

XPath-basert XML-editor

Jeg hadde en spesifikk kløe i dag : bulk-redigering av Maven POM-filer for å endre innholdet i et bestemt element.

Så jeg laget XmlEditor for å sette innholdet i noder plukket ut ved hjelp av XPath.

Dersom du for eksempel skal endre versjonsnummeret i alle POM-filer til en gitt versjon, kan du gjøre følgende:

java XmlEditor /project/version:=9.9.9 `find . -name pom.xml`


Eller for å oppdatere til siste versjon av jUnit og log4j :
java XmlEditor \
"//dependency[artifactId='junit']/version:=4.3.1" \
"//dependency[artifactId='log4j']/version:=1.2.14" \
`find . -name pom.xml`


Det er bare fantasien og hva man får til med XPath som begrenser hva man kan gjøre med denne..

2007-07-03

Hvordan lage pointcut på arvet metode

Vi forsøkte å lage et pointcut som skulle treffe på en metode som klassen vi var interessert i ikke implementerte selv, men arvet fra superklasse.

Den vanlige execution(* the.package.name.SubClass.method(..)) fungerte ikke, og AspectJ-kompilatoren spyttet ut merkelige meldinger.

Løsningen er å bruke this() matcheren:

  execution(* method(type1, type2, *)) && 
this(the.package.name.SubClass)


Takk til Kaare for tips.