[AspectJ] Interface Probleme ...

TommyMo

Erfahrenes Mitglied
Hi Leute!

Ich habe ein Problem mit AspectJ, und zwar möchte ich eine Methode zu einem Interface hinzufügen, und diese Methode mit einer Defaultimplementierung per Aspect versehen. Laut Eclipse HIlfe und Internetrecherche sollte das auch klappen. Ich sitze allerdings schon zwei Stunden vergeblich hier und wiederlege, frustriert, diese Behauptungen ... .

Hie mal meine Implementierungen:

Das Java Interface:

Code:
public interface Identifiable {
	public UUID getID();
	
	static aspect Impl {
		private UUID Identifiable.id;
		
		public UUID Identifiable.getId() {
			if (id == null)
				id = UUID.randomUUID();
			
			return id;
		}
	}
}

Der Aspekt der mir die Verknüpfung zu den Parents herstellt:
Code:
public aspect Identifier {
	declare parents: (ModelElement) extends Identifiable;
}

Ich muss auch sagen, dass das meine erste "Berührung" mit AspectJ ist. Ich bekomme beim Ausführen eine java.lang.AbstractMethodError Exception. Nach meiner Interpretation sieht das so aus, dass die Defaultimplementierung, siehe oben, nicht gefunden wird, oder falsch gemappt wird, oder wie immer man es bei Aspekten nennt :p

Für Hilfe wär ich dankbar!

Gruß
TOM
 
Hi Tom!

Jep, ich bin nämlich mit der Situation konfrontiert, dass die Objekte die von interesse sind, nicht eindeutige IDs haben. Noch dazu werden die Klassen für diese Objekte zur Laufzeit generiert, d.h. ich kann mittels einfachem Aspekt diese Funktionalität hinzufügen. Laut AspectJ in Action (Laddad) gibt es aber die Möglichkeit Interfaces mittels Aspekt zu erweitern ... und genau das will ich tun. Haut aber net hin :p

Gruß
TOM
 
Hallo!

Laut AspectJ in Action (Laddad) gibt es aber die Möglichkeit Interfaces mittels Aspekt zu erweitern ... und genau das will ich tun. Haut aber net hi
Das lässt sich über einen Introduction Advice machen... ich halte das aber nicht für besonders gut (zumindest nicht für Identitätsbelange). Weshalb haben die entsprechenden Klassen kein ID Attribut (...oder sonst irgendwas eindeutiges)?

Gruß Tom
 
Warum die Klassen keine eindeutige IDs haben ... tja, darauf kann ich leider auch keine Antwort geben. Sind OMG Klassen die von AndroMDA bereitgestellt werden.

Gruß
TOM
 
Zurück