comment faire pour forcer le schéma des classes compilées pour étendre la classe spécifique, en dehors du schéma

Besoin d'aide avec la situation suivante:
Les utilisateurs peuvent créer leurs propres structures de données qui sont stockés en tant que JAXB-prêt XSD sources comme ci-dessous:

<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="Group" type="Group"/>
  <xs:element name="Parameter" type="Parameter"/>

  <xs:complexType name="Group">
    <xs:sequence>
      <xs:element name="caption" type="xs:string" minOccurs="0"/>
      <xs:element name="parameters" type="Parameter" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Parameter">
    <xs:sequence>
      <xs:element name="key" type="xs:string" minOccurs="0"/>
      <xs:element name="group" type="Group" minOccurs="0"/>
      <xs:element name="value" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

Après, nouveau ou modifié, schéma apparaît, il est automatiquement analysé par le compilateur de Schéma, des sources java généré, compilé et emballés dans de l'utilisateur pots:

  SchemaCompiler sc = XJC.createSchemaCompiler();
  //Input source for schema
  InputSource is = new InputSource(new StringInputStream(objectPackage.getObjectSchema()));
  //Parse
  sc.parseSchema(is);
  S2JJAXBModel model = sc.bind();
  //Generate source
  JCodeModel jCodeModel = model.generateCode(null, null);
  jCodeModel.build(packageSourceDirectory);
  //Compile and package 
  //......

Et tout était ok jusqu'à ce qu'il a été décidé que tous les utilisateurs de générer les classes doivent s'étendre sur une catégorie connue, dire UserRootObject:

package user.abc;
public class Group extends com.mycompany.xml.UserRootObject {
  //
}

et

package user.abc;
public class Parameter extends com.mycompany.xml.UserRootObject {
  //
}

Tout est à la volée, je ne peux pas forcer les utilisateurs à modifier leur schéma de fichiers, mais je peut les transformer avant la génération de code.
On dirait que j'ai deux options pour introduire ce UserRootObject: d'une certaine façon par JCodeModel ou en quelque sorte de transformer les fichiers de schéma avant de construire des sources Java.

InformationsquelleAutor Osw | 2010-12-29