Moin Leute,
einmal das Grundproblem für Leute die nicht so viel lesen wollen:
Beim erben von abstrakten Klassen wird das XML-Schema bei JAXB mit vererbt.
ich hab ein kleines Problem mit JAXB, ich will es hier mal kurz umreißen und werde anstelle meine Projekt-QT's andere Beispiel verwenden. Nicht weil ich den QT nicht rausgeben mag, sondern weil es kürzer wird und dadurch besser zu lesen.
Also gehen wir davon aus, dass ich mehrere Projekte habe:
ProjectBase : Wird als lib in alle anderen Projekte eingebunden und stellt ein Package bereit in dem abstrakte Klassen liegen die einen Rahmen für JAXB-Typen bereitstellen
ProjectImpl1: Hier sollen nun die JAXB-Typen "ausprogrammiert" werden.
Was JAXB angeht ist in den Packages nun folgendes vorhanden:
In der Base, bei den abstrakten Klassen, liegt eine package-info.java sowie ein jaxb.index
In der Impl liegt auch eine package-info.java und ein jaxb.index
Die package-info.java's könnten nun so aussehen:
Für die abstrakten Klassen:
Für die Impl:
Nun erbt eine Klasse bei der Implementierung von einer abstrakten klasse:
Wenn ich jetzt über den
ein
für die "ausprogrammierten" Klassen abrufe, bekomme ich das Schema der abstrakten Klasse von der ich erbe. Ich will aber das Schema der Implementierung haben.
Jemand ne Ahnung wo hier das Problem liegen könnte ?
Ich danke euch schon mal für eure Hilfe!
LG
WhiTeY
einmal das Grundproblem für Leute die nicht so viel lesen wollen:
Beim erben von abstrakten Klassen wird das XML-Schema bei JAXB mit vererbt.
ich hab ein kleines Problem mit JAXB, ich will es hier mal kurz umreißen und werde anstelle meine Projekt-QT's andere Beispiel verwenden. Nicht weil ich den QT nicht rausgeben mag, sondern weil es kürzer wird und dadurch besser zu lesen.
Also gehen wir davon aus, dass ich mehrere Projekte habe:
ProjectBase : Wird als lib in alle anderen Projekte eingebunden und stellt ein Package bereit in dem abstrakte Klassen liegen die einen Rahmen für JAXB-Typen bereitstellen
ProjectImpl1: Hier sollen nun die JAXB-Typen "ausprogrammiert" werden.
Was JAXB angeht ist in den Packages nun folgendes vorhanden:
In der Base, bei den abstrakten Klassen, liegt eine package-info.java sowie ein jaxb.index
In der Impl liegt auch eine package-info.java und ein jaxb.index
Die package-info.java's könnten nun so aussehen:
Für die abstrakten Klassen:
Java:
@javax.xml.bind.annotation.XmlSchema(
namespace = "http://meinProj/base",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED,
xmlns = {
@javax.xml.bind.annotation.XmlNs(
namespaceURI = "http://meinProj/base",
prefix = "base"
)
})
package de.meinProj.base;
Für die Impl:
Java:
@javax.xml.bind.annotation.XmlSchema(
namespace = "http://http://meinProj/impl/impl1",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED,
location = "http://meinProj/base [url]http://meinProj/base/schema/base.xsd[/url] [url]http://meinProj/impl/impl1[/url] http://meinProj/base/schema/impl1.xsd",
xmlns = {@javax.xml.bind.annotation.XmlNs(namespaceURI = "http://meinProj/impl/impl1", prefix = "impl1"),
@javax.xml.bind.annotation.XmlNs(prefix = "xsi", namespaceURI = "http://www.w3.org/2001/XMLSchema-instance")
})
package de.meinProj.impl.impl1;
Nun erbt eine Klasse bei der Implementierung von einer abstrakten klasse:
Java:
@XmlType(name = "Base")
public abstract class Base {
}
Java:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BaseImpl")
@XmlRootElement
public class BaseImpl extends Base {
@XmlElement
public String someElement;
//Getter, Setter und so weiter...
}
Wenn ich jetzt über den
Code:
JAXBContext
Code:
Schema
Jemand ne Ahnung wo hier das Problem liegen könnte ?
Ich danke euch schon mal für eure Hilfe!
LG
WhiTeY