Class SchemaGenerator
- java.lang.Object
-
- org.eclipse.persistence.jaxb.compiler.SchemaGenerator
-
public class SchemaGenerator extends java.lang.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.
- Since:
- Oracle TopLink 11.1.1.0.0
- Author:
- mmacivor
- See Also:
TypeInfo
,AnnotationsProcessor
,Generator
-
-
Constructor Summary
Constructors Constructor Description SchemaGenerator(Helper helper)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addGlobalElements(java.util.Map<javax.xml.namespace.QName,ElementDeclaration> additionalElements)
void
addSchemaComponents(JavaClass myClass)
void
addToSchemaType(TypeInfo ownerTypeInfo, java.util.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)
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.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.org.eclipse.persistence.internal.oxm.schema.model.Attribute
createRefAttribute(java.lang.String attributeRefName, org.eclipse.persistence.internal.oxm.schema.model.ComplexType owningComplexType)
Create an attribute reference and add it to a given complex type.org.eclipse.persistence.internal.oxm.schema.model.Element
createRefElement(java.lang.String elementRefName, org.eclipse.persistence.internal.oxm.schema.model.TypeDefParticle particle)
Create an element reference and add it to a given particle.void
generateSchema(java.util.List<JavaClass> typeInfoClasses, java.util.Map<java.lang.String,TypeInfo> typeInfo, java.util.Map<java.lang.String,javax.xml.namespace.QName> userDefinedSchemaTypes, java.util.Map<java.lang.String,PackageInfo> packageToPackageInfoMappings, java.util.Map<javax.xml.namespace.QName,ElementDeclaration> additionalGlobalElements, java.util.Map<java.lang.String,java.lang.Class> arrayClassesToGeneratedClasses)
void
generateSchema(java.util.List<JavaClass> typeInfoClasses, java.util.Map<java.lang.String,TypeInfo> typeInfo, java.util.Map<java.lang.String,javax.xml.namespace.QName> userDefinedSchemaTypes, java.util.Map<java.lang.String,PackageInfo> packageToPackageInfoMappings, java.util.Map<javax.xml.namespace.QName,ElementDeclaration> additionalGlobalElements, java.util.Map<java.lang.String,java.lang.Class> arrayClassesToGeneratedClasses, javax.xml.bind.SchemaOutputResolver outputResolver)
java.util.Collection<org.eclipse.persistence.internal.oxm.schema.model.Schema>
getAllSchemas()
java.util.ArrayList<java.lang.Object>
getEnumerationFacetsFor(EnumTypeInfo info)
NamespaceInfo
getNamespaceInfoForNamespace(java.lang.String namespace)
NamespaceInfo
getNamespaceInfoForNamespace(java.lang.String namespace, java.lang.String packageName)
java.lang.String
getOrGeneratePrefixForNamespace(java.lang.String URI, org.eclipse.persistence.internal.oxm.schema.model.Schema schema)
Attempt to resolve the given URI to a prefix.java.lang.String
getPrefixForNamespace(org.eclipse.persistence.internal.oxm.schema.model.Schema schema, java.lang.String URI)
javax.xml.namespace.QName
getSchemaTypeFor(JavaClass javaClass)
Return the schema type (as QName) based on a given JavaClass.java.util.Map<java.lang.String,SchemaTypeInfo>
getSchemaTypeInfo()
Return the Map of SchemaTypeInfo instances.java.lang.String
getSchemaTypeNameForClassName(java.lang.String className)
Property
getXmlValueFieldForSimpleContent(TypeInfo info)
boolean
isCollectionType(Property field)
Indicates if a given Property is a collection type.void
populateSchemaTypes()
-
-
-
Constructor Detail
-
SchemaGenerator
public SchemaGenerator(Helper helper)
-
-
Method Detail
-
generateSchema
public void generateSchema(java.util.List<JavaClass> typeInfoClasses, java.util.Map<java.lang.String,TypeInfo> typeInfo, java.util.Map<java.lang.String,javax.xml.namespace.QName> userDefinedSchemaTypes, java.util.Map<java.lang.String,PackageInfo> packageToPackageInfoMappings, java.util.Map<javax.xml.namespace.QName,ElementDeclaration> additionalGlobalElements, java.util.Map<java.lang.String,java.lang.Class> arrayClassesToGeneratedClasses, javax.xml.bind.SchemaOutputResolver outputResolver)
-
generateSchema
public void generateSchema(java.util.List<JavaClass> typeInfoClasses, java.util.Map<java.lang.String,TypeInfo> typeInfo, java.util.Map<java.lang.String,javax.xml.namespace.QName> userDefinedSchemaTypes, java.util.Map<java.lang.String,PackageInfo> packageToPackageInfoMappings, java.util.Map<javax.xml.namespace.QName,ElementDeclaration> additionalGlobalElements, java.util.Map<java.lang.String,java.lang.Class> arrayClassesToGeneratedClasses)
-
addSchemaComponents
public void addSchemaComponents(JavaClass myClass)
-
addToSchemaType
public void addToSchemaType(TypeInfo ownerTypeInfo, java.util.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 javax.xml.namespace.QName getSchemaTypeFor(JavaClass javaClass)
Return the schema type (as QName) based on a given JavaClass.- Parameters:
javaClass
-- Returns:
-
populateSchemaTypes
public void populateSchemaTypes()
-
getSchemaTypeNameForClassName
public java.lang.String getSchemaTypeNameForClassName(java.lang.String className)
-
getEnumerationFacetsFor
public java.util.ArrayList<java.lang.Object> getEnumerationFacetsFor(EnumTypeInfo info)
-
isCollectionType
public boolean isCollectionType(Property field)
Indicates if a given Property is a collection type.- Parameters:
field
-- Returns:
-
getAllSchemas
public java.util.Collection<org.eclipse.persistence.internal.oxm.schema.model.Schema> getAllSchemas()
-
getNamespaceInfoForNamespace
public NamespaceInfo getNamespaceInfoForNamespace(java.lang.String namespace)
-
getNamespaceInfoForNamespace
public NamespaceInfo getNamespaceInfoForNamespace(java.lang.String namespace, java.lang.String packageName)
-
getPrefixForNamespace
public java.lang.String getPrefixForNamespace(org.eclipse.persistence.internal.oxm.schema.model.Schema schema, java.lang.String URI)
-
getOrGeneratePrefixForNamespace
public java.lang.String getOrGeneratePrefixForNamespace(java.lang.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(java.util.Map<javax.xml.namespace.QName,ElementDeclaration> additionalElements)
-
getSchemaTypeInfo
public java.util.Map<java.lang.String,SchemaTypeInfo> getSchemaTypeInfo()
Return the Map of SchemaTypeInfo instances. The Map is keyed on JavaClass qualified name.- 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 elementworkingSchema
- current schemafragSchema
- frag's schemaisChoice
- indicates if we need to construct a choiceisUnbounded
- maxOccurs setting for choiceprop
- property which owns the xml-pathshouldSetType
- 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(java.lang.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(java.lang.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:
-
-