# JAXB, Vererbung und Codegeneration



## Käptn Blaubär (31. Mrz 2009)

Hallo,

Ich habe ein kleines Problem mit der Erzeugung von Klassen via JAXB.

Ich habe a.xsd, diese definiert de.bluebear.A.
Dann  habe ich noch b.xsd die a als Namespace importiert und de.bluebear.test.B erzeugt wobei B von A erbt, so weit so gut.

Wenn ich mich in untershciedlichen Projekten befinde passiert es leider das
leider dabei die Klasse de.bluebear.A im Projekt 2 mit angelegt, dabei möchte ich doch von  de.bluebear.A in Projekt 1 erben.

Was muss ich machen damit das so funktioniert wie ich mir das vorstelle oder geht das nicht?

EDIT: richtigstellung


----------



## Noctarius (31. Mrz 2009)

Ich habe es in einem Projekt von mir gelöst in dem ich von den JAXB erzeugten Klassen abgeleitet habe und ein Interface in beiden Klassen implementiert habe um eine Verknüpfung zu schaffen.

[highlight=java]public interface IJob {
	int getJobId();
	void setJobId(int jobId);
	int getFoo();
	void setFoo(int foo);
	String getBar();
	void setBar(String bar);
	String getSpecialCaseValue();
	void setSpecialCaseValue(String specialCaseValue);
}

public class JaxBGeneratedClass {
	// Entsprechen den Tag-Namen
	public int getJobId() { ... }
	public void setJobId(int jobId) { ... }
	public int getFoo() { ... }
	public void setFoo(int foo) { ... }
	public String getBar() { ... }
	public void setBar(String bar) { ... }
	public String getCaseValue() { ... }
	public void setCaseValue(String caseValue) { ... }

	// Wrapperfunktionen
	String getSpecialCaseValue() { getCaseValue().toUpperCase(); }
	void setSpecialCaseValue(String specialCaseValue) { setCaseValue(specialCaseValue); }

	// ... JAXB spezifische Funktionen
}

public class SubJaxBClass extends JaxBGeneratedClass implements IJob {

}[/highlight]


----------



## Wildcard (31. Mrz 2009)

Ich würde dir zu EMF raten. Deutlich mächtiger und flexibler als JaxB. Im Falle von Vererbung lässt du einfach dein 2. Meta Modell das erste importieren.


----------

