Class SchemaGenerator

java.lang.Object
org.eclipse.persistence.jaxb.compiler.SchemaGenerator

public class SchemaGenerator extends Object
INTERNAL:

Purpose:To generate Schema objects based on a map of TypeInfo objects, and some additional information gathered by the AnnotationsProcessing phase.

Responsibilities:

  • Create and maintain a collection of Schema objects based on the provided TypeInfo objects
  • Add additional global elements to the schema based on an optional map (for WS integration)
  • Should create a schema for each namespace encountered during generation.

This class is used by the Generator to handle the generation of Schemas. The Generator passes in a map of TypeInfo objects, generated by the Annotations processor. The generated Schemas are stored in a map of keyed on Target Namespace.

See Also:
Author:
mmacivor
  • Constructor Details

    • SchemaGenerator

      public SchemaGenerator(Helper helper)
  • Method Details

    • generateSchema

      public void generateSchema(List<JavaClass> typeInfoClasses, Map<String,TypeInfo> typeInfo, Map<String,QName> userDefinedSchemaTypes, Map<String,PackageInfo> packageToPackageInfoMappings, Map<QName,ElementDeclaration> additionalGlobalElements, Map<String,Class> arrayClassesToGeneratedClasses, jakarta.xml.bind.SchemaOutputResolver outputResolver)
    • generateSchema

      public void generateSchema(List<JavaClass> typeInfoClasses, Map<String,TypeInfo> typeInfo, Map<String,QName> userDefinedSchemaTypes, Map<String,PackageInfo> packageToPackageInfoMappings, Map<QName,ElementDeclaration> additionalGlobalElements, Map<String,Class> arrayClassesToGeneratedClasses)
    • addSchemaComponents

      public void addSchemaComponents(JavaClass myClass)
    • addToSchemaType

      public void addToSchemaType(TypeInfo ownerTypeInfo, List<Property> properties, org.eclipse.persistence.internal.oxm.schema.model.TypeDefParticle compositor, org.eclipse.persistence.internal.oxm.schema.model.ComplexType type, org.eclipse.persistence.internal.oxm.schema.model.Schema workingSchema)
    • getSchemaTypeFor

      public QName getSchemaTypeFor(JavaClass javaClass)
      Return the schema type (as QName) based on a given JavaClass.
      Parameters:
      javaClass -
      Returns:
    • populateSchemaTypes

      public void populateSchemaTypes()
    • getSchemaTypeNameForClassName

      public String getSchemaTypeNameForClassName(String className)
    • getEnumerationFacetsFor

      public ArrayList<Object> getEnumerationFacetsFor(EnumTypeInfo info)
    • getXmlValueFieldForSimpleContent

      public Property getXmlValueFieldForSimpleContent(TypeInfo info)
    • isCollectionType

      public boolean isCollectionType(Property field)
      Indicates if a given Property is a collection type.
      Parameters:
      field -
      Returns:
    • getAllSchemas

      public Collection<org.eclipse.persistence.internal.oxm.schema.model.Schema> getAllSchemas()
    • getNamespaceInfoForNamespace

      public NamespaceInfo getNamespaceInfoForNamespace(String namespace)
    • getNamespaceInfoForNamespace

      public NamespaceInfo getNamespaceInfoForNamespace(String namespace, String packageName)
    • getPrefixForNamespace

      public String getPrefixForNamespace(org.eclipse.persistence.internal.oxm.schema.model.Schema schema, String URI)
    • getOrGeneratePrefixForNamespace

      public String getOrGeneratePrefixForNamespace(String URI, org.eclipse.persistence.internal.oxm.schema.model.Schema schema)
      Attempt to resolve the given URI to a prefix. If this is unsuccessful, one will be generated and added to the resolver.
      Parameters:
      URI -
      schema -
      Returns:
    • addGlobalElements

      public void addGlobalElements(Map<QName,ElementDeclaration> additionalElements)
    • getSchemaTypeInfo

      public Map<String,SchemaTypeInfo> getSchemaTypeInfo()
      Return the Map of SchemaTypeInfo instances. The Map is keyed on JavaClass qualified name.
      Returns:
    • areEquals

      protected boolean areEquals(JavaClass src, String tgtCanonicalName)
      Compares a JavaModel JavaClass to a Class. Equality is based on the raw name of the JavaClass compared to the canonical name of the Class.
      Parameters:
      src -
      tgtCanonicalName -
      Returns:
    • areEquals

      protected boolean areEquals(JavaClass src, Class tgt)
      Compares a JavaModel JavaClass to a Class. Equality is based on the raw name of the JavaClass compared to the canonical name of the Class.
      Parameters:
      src -
      tgt -
      Returns:
    • elementExistsInParticle

      protected org.eclipse.persistence.internal.oxm.schema.model.Element elementExistsInParticle(String elementName, String refString, org.eclipse.persistence.internal.oxm.schema.model.TypeDefParticle particle)
      Convenience method for determining if an element already exists in a given typedefparticle. If an element exists whose ref is equal to 'refString' or its name is equal to 'elementName', it is returned. Null otherwise. Note that ref takes precidence, so if either has a ref set name equality will not be performed.
      Parameters:
      elementName - the non-null element name to look for
      refString - if the element is a ref, this will be the prefix qualified element name
      particle - the sequence/choice/all to search for an existing element
      Returns:
    • createGlobalAttribute

      public org.eclipse.persistence.internal.oxm.schema.model.Attribute createGlobalAttribute(org.eclipse.persistence.internal.oxm.XPathFragment frag, org.eclipse.persistence.internal.oxm.schema.model.Schema workingSchema, org.eclipse.persistence.internal.oxm.schema.model.Schema fragSchema, Property prop)
      Create a global attribute. An import is added if necessary. This method will typically be called when processing an XPath and a prefixed path element is encountered tha requires an attribute ref.
      Parameters:
      frag -
      workingSchema -
      fragSchema -
      prop -
      Returns:
    • createGlobalElement

      public org.eclipse.persistence.internal.oxm.schema.model.Element createGlobalElement(org.eclipse.persistence.internal.oxm.XPathFragment frag, org.eclipse.persistence.internal.oxm.schema.model.Schema workingSchema, org.eclipse.persistence.internal.oxm.schema.model.Schema fragSchema, boolean isChoice, boolean isUnbounded, Property prop, boolean shouldSetType)
      Create a global element. An import is added if necessary. This method will typically be called when processing an XPath and a prefixed path element is encountered the requires an element ref.
      Parameters:
      frag - XPathFragment which wil lbe used to create the global element
      workingSchema - current schema
      fragSchema - frag's schema
      isChoice - indicates if we need to construct a choice
      isUnbounded - maxOccurs setting for choice
      prop - property which owns the xml-path
      shouldSetType - if this is the last fragment in the xml-path and not an 'any', we should set the type
      Returns:
    • createRefElement

      public org.eclipse.persistence.internal.oxm.schema.model.Element createRefElement(String elementRefName, org.eclipse.persistence.internal.oxm.schema.model.TypeDefParticle particle)
      Create an element reference and add it to a given particle. This method will typically be called when processing an XPath and a prefixed path element is encountered that requires an element ref.
      Parameters:
      elementRefName -
      particle -
      Returns:
    • createRefAttribute

      public org.eclipse.persistence.internal.oxm.schema.model.Attribute createRefAttribute(String attributeRefName, org.eclipse.persistence.internal.oxm.schema.model.ComplexType owningComplexType)
      Create an attribute reference and add it to a given complex type. This method will typically be called when processing an XPath and a prefixed path element is encountered that requires an attribute ref.
      Parameters:
      attributeRefName -
      owningComplexType -
      Returns:
    • getTransformerPropertyBuilder

      protected TransformerPropertyBuilder getTransformerPropertyBuilder(Property property, TypeInfo typeInfo)
      Returns TransformerPropertyBuilder which builds properties from xml transformers.
      Parameters:
      property - property holding xml transformers
      typeInfo - typeInfo with transformer class
      Returns:
      transformer property builder