Class SchemaRegistryImpl
- java.lang.Object
-
- com.evolveum.midpoint.prism.impl.schema.SchemaRegistryImpl
-
- All Implemented Interfaces:
PrismContextSensitive,DefinitionsStore,GlobalDefinitionsStore,SchemaRegistry,DebugDumpable
- Direct Known Subclasses:
AxiomEnabledSchemaRegistry
public class SchemaRegistryImpl extends Object implements DebugDumpable, SchemaRegistry
Registry and resolver of schema files and resources.- Author:
- Radovan Semancik
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.evolveum.midpoint.prism.schema.SchemaRegistry
SchemaRegistry.ComparisonResult, SchemaRegistry.InvalidationListener, SchemaRegistry.IsList
-
-
Field Summary
-
Fields inherited from interface com.evolveum.midpoint.util.DebugDumpable
INDENT_STRING
-
-
Constructor Summary
Constructors Constructor Description SchemaRegistryImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <O extends Objectable>
voidapplyDefinition(ObjectDelta<O> objectDelta, Class<O> compileTimeClass, boolean force)<C extends Containerable>
voidapplyDefinition(PrismContainer<C> container, Class<C> type)This method will try to locate the appropriate object definition and apply it.<C extends Containerable>
voidapplyDefinition(PrismContainer<C> container, Class<C> compileTimeClass, boolean force)<C extends Containerable,O extends Objectable>
voidapplyDefinition(PrismContainerValue<C> prismContainerValue, Class<O> compileTimeClass, ItemPath path, boolean force)<C extends Containerable>
voidapplyDefinition(PrismContainerValue<C> prismContainerValue, QName typeName, ItemPath path, boolean force)<ID extends ItemDefinition>
SchemaRegistry.ComparisonResultcompareDefinitions(ID def1, ID def2)ItemDefinition<?>createAdHocDefinition(QName elementName, QName typeName, int minOccurs, int maxOccurs)StringdebugDump(int indent)Class<?>determineClassForItemDefinition(ItemDefinition<?> itemDefinition)<T> Class<T>determineClassForType(QName type)<T> Class<T>determineCompileTimeClass(QName type)PrismObjectDefinitiondetermineDefinitionFromClass(Class compileTimeClass)ComplexTypeDefinitiondetermineParentDefinition(@NotNull ComplexTypeDefinition child, @NotNull ItemPath rest)PrismObjectDefinitiondetermineReferencedObjectDefinition(@NotNull QName targetTypeName, ItemPath rest)QNamedetermineTypeForClass(Class<?> clazz)Tries to determine type name for any class (primitive, complex one).ItemDefinitionfindItemDefinitionByElementName(QName elementName, @Nullable List<String> ignoredNamespaces)<T extends ItemDefinition>
TfindItemDefinitionByFullPath(Class<? extends Objectable> objectClass, Class<T> defClass, QName... itemNames)<ID extends ItemDefinition>
IDfindItemDefinitionByType(@NotNull QName typeName, @NotNull Class<ID> definitionClass)<ID extends ItemDefinition>
@NotNull List<ID>findItemDefinitionsByCompileTimeClass(@NotNull Class<?> compileTimeClass, @NotNull Class<ID> definitionClass)<ID extends ItemDefinition>
@NotNull List<ID>findItemDefinitionsByElementName(@NotNull QName elementName, @NotNull Class<ID> definitionClass)<O extends Objectable>
PrismObjectDefinition<O>findObjectDefinitionByCompileTimeClass(@NotNull Class<O> compileTimeClass)<O extends Objectable>
PrismObjectDefinition<O>findObjectDefinitionByType(@NotNull QName typeName)PrismSchemafindSchemaByCompileTimeClass(@NotNull Class<?> compileTimeClass)PrismSchemafindSchemaByNamespace(String namespaceURI)PrismSchemafindSchemaByPrefix(String prefix)SchemaDescriptionfindSchemaDescriptionByNamespace(String namespaceURI)SchemaDescriptionfindSchemaDescriptionByPrefix(String prefix)<TD extends TypeDefinition>
TDfindTypeDefinitionByCompileTimeClass(@NotNull Class<?> compileTimeClass, @NotNull Class<TD> definitionClass)<TD extends TypeDefinition>
TDfindTypeDefinitionByType(@NotNull QName typeName, @NotNull Class<TD> definitionClass)<TD extends TypeDefinition>
@NotNull Collection<TD>findTypeDefinitionsByElementName(@NotNull QName name, @NotNull Class<TD> clazz)<TD extends TypeDefinition>
@NotNull Collection<? extends TD>findTypeDefinitionsByType(@NotNull QName typeName, @NotNull Class<TD> definitionClass)EntityResolvergetBuiltinSchemaResolver()File[]getCatalogFiles()StringgetCatalogResourceName()<T> Class<T>getCompileTimeClass(QName xsdType)Class<? extends ObjectType>getCompileTimeClassForObjectType(QName objectType)Collection<Package>getCompileTimePackages()StringgetDefaultNamespace()XmlEntityResolvergetEntityResolver()SchemagetJavaxSchema()ValidatorgetJavaxSchemaValidator()DynamicNamespacePrefixMappergetNamespacePrefixMapper()org.apache.commons.collections4.MultiValuedMap<String,SchemaDescription>getParsedSchemas()PrismContextgetPrismContext()PrismSchemagetPrismSchema(String namespace)Collection<SchemaDescription>getSchemaDescriptions()Collection<PrismSchema>getSchemas()@NotNull PrismContainerDefinition<?>getValueMetadataDefinition()QNamegetValueMetadataTypeName()booleanhasImplicitTypeDefinition(@NotNull QName itemName, @NotNull QName typeName)Answers the question: "If the receiver would get itemName without any other information, will it be able to derive suitable typeName from it?" If not, we have to provide explicit type definition for serialization.voidinitialize()This can be used to read additional schemas even after the registry was initialized.booleanisAssignableFrom(@NotNull Class<?> superClass, @NotNull QName subType)BEWARE: works only with statically-defined types!booleanisAssignableFrom(@NotNull QName superType, @NotNull QName subType)BEWARE: works only with statically-defined types!booleanisContainerable(QName typeName)@NotNull SchemaRegistry.IsListisList(@Nullable QName xsiType, @NotNull QName elementName)Checks whether element with given (declared) xsi:type and name can be a heterogeneous list.protected voidloadPrismSchemaFileDescription(File file)voidloadPrismSchemaResource(String resourcePath)ItemDefinitionlocateItemDefinition(@NotNull QName itemName, @Nullable ComplexTypeDefinition complexTypeDefinition, @Nullable Function<QName,ItemDefinition> dynamicDefinitionProvider)protected voidparseAdditionalSchemas()protected voidparsePrismSchemas()QNamequalifyTypeName(QName typeName)voidregisterInvalidationListener(SchemaRegistry.InvalidationListener listener)voidregisterPrismDefaultSchemaResource(String resourcePath, String usualPrefix, Package compileTimeClassesPackage)Must be called before call to initialize()voidregisterPrismSchema(InputStream input, String sourceDescription)voidregisterPrismSchemaFile(File file)voidregisterPrismSchemaResource(String resourcePath, String usualPrefix)Must be called before call to initialize()voidregisterPrismSchemaResource(String resourcePath, String usualPrefix, Package compileTimeClassesPackage)Must be called before call to initialize()voidregisterPrismSchemaResource(String resourcePath, String usualPrefix, Package compileTimeClassesPackage, boolean prefixDeclaredByDefault)Must be called before call to initialize()voidregisterPrismSchemasFromDirectory(File directory)voidregisterPrismSchemasFromDirectory(File directory, @NotNull Collection<String> extensionFilesToIgnore)voidregisterPrismSchemasFromWsdlResource(String resourcePath, List<Package> compileTimeClassesPackages)voidregisterSchema(Node node, String sourceDescription)Must be called before call to initialize()voidregisterSchemaResource(String resourcePath, String usualPrefix)Must be called before call to initialize()ItemDefinitionresolveGlobalItemDefinition(QName itemName, @Nullable ComplexTypeDefinition complexTypeDefinition)QNameresolveUnqualifiedTypeName(QName type)<ID extends ItemDefinition>
IDselectMoreSpecific(ID def1, ID def2)QNameselectMoreSpecific(QName type1, QName type2)voidsetCatalogFiles(File[] catalogFiles)voidsetCatalogResourceName(String catalogResourceName)voidsetDefaultNamespace(String defaultNamespace)voidsetNamespacePrefixMapper(DynamicNamespacePrefixMapper namespacePrefixMapper)voidsetPrismContext(PrismContext prismContext)voidsetValueMetadataTypeName(QName typeName)QNameunifyTypes(QName type1, QName type2)Returns most specific common supertype for these two.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.evolveum.midpoint.util.DebugDumpable
debugDump, debugDumpLazily, debugDumpLazily
-
Methods inherited from interface com.evolveum.midpoint.prism.schema.GlobalDefinitionsStore
findComplexTypeDefinitionByCompileTimeClass, findComplexTypeDefinitionByType, findContainerDefinitionByCompileTimeClass, findContainerDefinitionByElementName, findContainerDefinitionByType, findItemDefinitionByCompileTimeClass, findItemDefinitionByElementName, findItemDefinitionByElementName, findItemDefinitionByType, findItemDefinitionsByElementName, findObjectDefinitionByElementName, findPropertyDefinitionByElementName, findReferenceDefinitionByElementName, findSimpleTypeDefinitionByType, findTypeDefinitionByType, findTypeDefinitionsByType
-
Methods inherited from interface com.evolveum.midpoint.prism.schema.SchemaRegistry
determineClassForTypeRequired, determineClassForTypeRequired, determineTypeForClassRequired
-
-
-
-
Method Detail
-
getNamespacePrefixMapper
public DynamicNamespacePrefixMapper getNamespacePrefixMapper()
- Specified by:
getNamespacePrefixMapperin interfaceSchemaRegistry
-
setNamespacePrefixMapper
public void setNamespacePrefixMapper(DynamicNamespacePrefixMapper namespacePrefixMapper)
-
registerInvalidationListener
public void registerInvalidationListener(SchemaRegistry.InvalidationListener listener)
- Specified by:
registerInvalidationListenerin interfaceSchemaRegistry
-
getPrismContext
public PrismContext getPrismContext()
- Specified by:
getPrismContextin interfacePrismContextSensitive
-
setPrismContext
public void setPrismContext(PrismContext prismContext)
-
getEntityResolver
public XmlEntityResolver getEntityResolver()
-
getParsedSchemas
public org.apache.commons.collections4.MultiValuedMap<String,SchemaDescription> getParsedSchemas()
-
getBuiltinSchemaResolver
public EntityResolver getBuiltinSchemaResolver()
-
getCatalogFiles
public File[] getCatalogFiles()
-
setCatalogFiles
public void setCatalogFiles(File[] catalogFiles)
-
getCatalogResourceName
public String getCatalogResourceName()
-
setCatalogResourceName
public void setCatalogResourceName(String catalogResourceName)
-
getDefaultNamespace
public String getDefaultNamespace()
- Specified by:
getDefaultNamespacein interfaceSchemaRegistry
-
setDefaultNamespace
public void setDefaultNamespace(String defaultNamespace)
-
registerSchemaResource
public void registerSchemaResource(String resourcePath, String usualPrefix) throws SchemaException
Must be called before call to initialize()- Throws:
SchemaException
-
registerPrismSchemaResource
public void registerPrismSchemaResource(String resourcePath, String usualPrefix) throws SchemaException
Must be called before call to initialize()- Throws:
SchemaException
-
registerPrismSchemasFromWsdlResource
public void registerPrismSchemasFromWsdlResource(String resourcePath, List<Package> compileTimeClassesPackages) throws SchemaException
- Throws:
SchemaException
-
registerPrismSchemaResource
public void registerPrismSchemaResource(String resourcePath, String usualPrefix, Package compileTimeClassesPackage) throws SchemaException
Must be called before call to initialize()- Throws:
SchemaException
-
registerPrismSchemaResource
public void registerPrismSchemaResource(String resourcePath, String usualPrefix, Package compileTimeClassesPackage, boolean prefixDeclaredByDefault) throws SchemaException
Must be called before call to initialize()- Throws:
SchemaException
-
registerPrismDefaultSchemaResource
public void registerPrismDefaultSchemaResource(String resourcePath, String usualPrefix, Package compileTimeClassesPackage) throws SchemaException
Must be called before call to initialize()- Throws:
SchemaException
-
registerSchema
public void registerSchema(Node node, String sourceDescription) throws SchemaException
Must be called before call to initialize()- Throws:
SchemaException
-
registerPrismSchemaFile
public void registerPrismSchemaFile(File file) throws IOException, SchemaException
- Throws:
IOExceptionSchemaException
-
registerPrismSchema
public void registerPrismSchema(InputStream input, String sourceDescription) throws SchemaException
- Throws:
SchemaException
-
loadPrismSchemaFileDescription
protected void loadPrismSchemaFileDescription(File file) throws SchemaException, IOException
- Throws:
SchemaExceptionIOException
-
registerPrismSchemasFromDirectory
public void registerPrismSchemasFromDirectory(File directory) throws IOException, SchemaException
- Throws:
IOExceptionSchemaException
-
registerPrismSchemasFromDirectory
public void registerPrismSchemasFromDirectory(File directory, @NotNull @NotNull Collection<String> extensionFilesToIgnore) throws IOException, SchemaException
- Throws:
IOExceptionSchemaException
-
loadPrismSchemaResource
public void loadPrismSchemaResource(String resourcePath) throws SchemaException
- Throws:
SchemaException
-
initialize
public void initialize() throws SAXException, IOException, SchemaExceptionThis can be used to read additional schemas even after the registry was initialized.- Specified by:
initializein interfaceSchemaRegistry- Throws:
SAXExceptionIOExceptionSchemaException
-
parseAdditionalSchemas
protected void parseAdditionalSchemas() throws SchemaException- Throws:
SchemaException
-
parsePrismSchemas
protected void parsePrismSchemas() throws SchemaException- Throws:
SchemaException
-
getJavaxSchema
public Schema getJavaxSchema()
- Specified by:
getJavaxSchemain interfaceSchemaRegistry
-
getJavaxSchemaValidator
public Validator getJavaxSchemaValidator()
- Specified by:
getJavaxSchemaValidatorin interfaceSchemaRegistry
-
getCompileTimePackages
public Collection<Package> getCompileTimePackages()
- Specified by:
getCompileTimePackagesin interfaceSchemaRegistry
-
debugDump
public String debugDump(int indent)
- Specified by:
debugDumpin interfaceDebugDumpable
-
applyDefinition
public <C extends Containerable> void applyDefinition(PrismContainer<C> container, Class<C> type) throws SchemaException
Description copied from interface:SchemaRegistryThis method will try to locate the appropriate object definition and apply it.- Specified by:
applyDefinitionin interfaceSchemaRegistry- Throws:
SchemaException
-
applyDefinition
public <C extends Containerable> void applyDefinition(PrismContainer<C> container, Class<C> compileTimeClass, boolean force) throws SchemaException
- Specified by:
applyDefinitionin interfaceSchemaRegistry- Throws:
SchemaException
-
applyDefinition
public <O extends Objectable> void applyDefinition(ObjectDelta<O> objectDelta, Class<O> compileTimeClass, boolean force) throws SchemaException
- Specified by:
applyDefinitionin interfaceSchemaRegistry- Throws:
SchemaException
-
applyDefinition
public <C extends Containerable,O extends Objectable> void applyDefinition(PrismContainerValue<C> prismContainerValue, Class<O> compileTimeClass, ItemPath path, boolean force) throws SchemaException
- Specified by:
applyDefinitionin interfaceSchemaRegistry- Throws:
SchemaException
-
applyDefinition
public <C extends Containerable> void applyDefinition(PrismContainerValue<C> prismContainerValue, QName typeName, ItemPath path, boolean force) throws SchemaException
- Specified by:
applyDefinitionin interfaceSchemaRegistry- Throws:
SchemaException
-
findItemDefinitionsByCompileTimeClass
@NotNull public <ID extends ItemDefinition> @NotNull List<ID> findItemDefinitionsByCompileTimeClass(@NotNull @NotNull Class<?> compileTimeClass, @NotNull @NotNull Class<ID> definitionClass)
- Specified by:
findItemDefinitionsByCompileTimeClassin interfaceGlobalDefinitionsStore
-
findItemDefinitionByType
@Nullable public <ID extends ItemDefinition> ID findItemDefinitionByType(@NotNull @NotNull QName typeName, @NotNull @NotNull Class<ID> definitionClass)
- Specified by:
findItemDefinitionByTypein interfaceGlobalDefinitionsStore
-
findItemDefinitionsByElementName
@NotNull public <ID extends ItemDefinition> @NotNull List<ID> findItemDefinitionsByElementName(@NotNull @NotNull QName elementName, @NotNull @NotNull Class<ID> definitionClass)
- Specified by:
findItemDefinitionsByElementNamein interfaceGlobalDefinitionsStore
-
findTypeDefinitionByCompileTimeClass
@Nullable public <TD extends TypeDefinition> TD findTypeDefinitionByCompileTimeClass(@NotNull @NotNull Class<?> compileTimeClass, @NotNull @NotNull Class<TD> definitionClass)
- Specified by:
findTypeDefinitionByCompileTimeClassin interfaceGlobalDefinitionsStore
-
findTypeDefinitionByType
@Nullable public <TD extends TypeDefinition> TD findTypeDefinitionByType(@NotNull @NotNull QName typeName, @NotNull @NotNull Class<TD> definitionClass)
- Specified by:
findTypeDefinitionByTypein interfaceGlobalDefinitionsStore
-
findTypeDefinitionsByType
@NotNull public <TD extends TypeDefinition> @NotNull Collection<? extends TD> findTypeDefinitionsByType(@NotNull @NotNull QName typeName, @NotNull @NotNull Class<TD> definitionClass)
- Specified by:
findTypeDefinitionsByTypein interfaceGlobalDefinitionsStore
-
findTypeDefinitionsByElementName
@NotNull public <TD extends TypeDefinition> @NotNull Collection<TD> findTypeDefinitionsByElementName(@NotNull @NotNull QName name, @NotNull @NotNull Class<TD> clazz)
- Specified by:
findTypeDefinitionsByElementNamein interfaceSchemaRegistry
-
findObjectDefinitionByCompileTimeClass
@Experimental public <O extends Objectable> PrismObjectDefinition<O> findObjectDefinitionByCompileTimeClass(@NotNull @NotNull Class<O> compileTimeClass)
- Specified by:
findObjectDefinitionByCompileTimeClassin interfaceGlobalDefinitionsStore
-
findObjectDefinitionByType
public <O extends Objectable> PrismObjectDefinition<O> findObjectDefinitionByType(@NotNull @NotNull QName typeName)
- Specified by:
findObjectDefinitionByTypein interfaceGlobalDefinitionsStore
-
findItemDefinitionByFullPath
public <T extends ItemDefinition> T findItemDefinitionByFullPath(Class<? extends Objectable> objectClass, Class<T> defClass, QName... itemNames) throws SchemaException
- Specified by:
findItemDefinitionByFullPathin interfaceSchemaRegistry- Throws:
SchemaException
-
findItemDefinitionByElementName
public ItemDefinition findItemDefinitionByElementName(QName elementName, @Nullable @Nullable List<String> ignoredNamespaces)
- Specified by:
findItemDefinitionByElementNamein interfaceSchemaRegistry
-
getCompileTimeClass
public <T> Class<T> getCompileTimeClass(QName xsdType)
- Specified by:
getCompileTimeClassin interfaceSchemaRegistry
-
getCompileTimeClassForObjectType
public Class<? extends ObjectType> getCompileTimeClassForObjectType(QName objectType)
- Specified by:
getCompileTimeClassForObjectTypein interfaceSchemaRegistry
-
determineDefinitionFromClass
public PrismObjectDefinition determineDefinitionFromClass(Class compileTimeClass)
- Specified by:
determineDefinitionFromClassin interfaceSchemaRegistry
-
locateItemDefinition
public ItemDefinition locateItemDefinition(@NotNull @NotNull QName itemName, @Nullable @Nullable ComplexTypeDefinition complexTypeDefinition, @Nullable @Nullable Function<QName,ItemDefinition> dynamicDefinitionProvider)
- Specified by:
locateItemDefinitionin interfaceSchemaRegistry
-
resolveUnqualifiedTypeName
public QName resolveUnqualifiedTypeName(QName type) throws SchemaException
- Specified by:
resolveUnqualifiedTypeNamein interfaceSchemaRegistry- Throws:
SchemaException
-
qualifyTypeName
public QName qualifyTypeName(QName typeName) throws SchemaException
- Specified by:
qualifyTypeNamein interfaceSchemaRegistry- Throws:
SchemaException
-
determineParentDefinition
public ComplexTypeDefinition determineParentDefinition(@NotNull @NotNull ComplexTypeDefinition child, @NotNull @NotNull ItemPath rest)
- Specified by:
determineParentDefinitionin interfaceSchemaRegistry
-
determineReferencedObjectDefinition
public PrismObjectDefinition determineReferencedObjectDefinition(@NotNull @NotNull QName targetTypeName, ItemPath rest)
- Specified by:
determineReferencedObjectDefinitionin interfaceSchemaRegistry
-
resolveGlobalItemDefinition
public ItemDefinition resolveGlobalItemDefinition(QName itemName, @Nullable @Nullable ComplexTypeDefinition complexTypeDefinition)
- Specified by:
resolveGlobalItemDefinitionin interfaceSchemaRegistry
-
getPrismSchema
public PrismSchema getPrismSchema(String namespace)
- Specified by:
getPrismSchemain interfaceSchemaRegistry
-
getSchemas
public Collection<PrismSchema> getSchemas()
- Specified by:
getSchemasin interfaceSchemaRegistry
-
getSchemaDescriptions
public Collection<SchemaDescription> getSchemaDescriptions()
- Specified by:
getSchemaDescriptionsin interfaceSchemaRegistry
-
findSchemaByCompileTimeClass
public PrismSchema findSchemaByCompileTimeClass(@NotNull @NotNull Class<?> compileTimeClass)
- Specified by:
findSchemaByCompileTimeClassin interfaceSchemaRegistry
-
findSchemaByNamespace
public PrismSchema findSchemaByNamespace(String namespaceURI)
- Specified by:
findSchemaByNamespacein interfaceSchemaRegistry
-
findSchemaDescriptionByNamespace
public SchemaDescription findSchemaDescriptionByNamespace(String namespaceURI)
- Specified by:
findSchemaDescriptionByNamespacein interfaceSchemaRegistry
-
findSchemaByPrefix
public PrismSchema findSchemaByPrefix(String prefix)
- Specified by:
findSchemaByPrefixin interfaceSchemaRegistry
-
findSchemaDescriptionByPrefix
public SchemaDescription findSchemaDescriptionByPrefix(String prefix)
- Specified by:
findSchemaDescriptionByPrefixin interfaceSchemaRegistry
-
isList
@NotNull public @NotNull SchemaRegistry.IsList isList(@Nullable @Nullable QName xsiType, @NotNull @NotNull QName elementName)
Description copied from interface:SchemaRegistryChecks whether element with given (declared) xsi:type and name can be a heterogeneous list.- Specified by:
isListin interfaceSchemaRegistry- Returns:
- YES if it is a list, NO if it's not, MAYBE if it probably is a list but some further content-based checks are needed
-
setValueMetadataTypeName
public void setValueMetadataTypeName(QName typeName)
-
getValueMetadataDefinition
@NotNull public @NotNull PrismContainerDefinition<?> getValueMetadataDefinition()
- Specified by:
getValueMetadataDefinitionin interfaceSchemaRegistry
-
hasImplicitTypeDefinition
public boolean hasImplicitTypeDefinition(@NotNull @NotNull QName itemName, @NotNull @NotNull QName typeName)Answers the question: "If the receiver would get itemName without any other information, will it be able to derive suitable typeName from it?" If not, we have to provide explicit type definition for serialization.By suitable we mean such that can be used to determine specific object type.
- Specified by:
hasImplicitTypeDefinitionin interfaceSchemaRegistry
-
determineTypeForClass
public QName determineTypeForClass(Class<?> clazz)
Description copied from interface:SchemaRegistryTries to determine type name for any class (primitive, complex one). Does not use schemas (TODO explanation)- Specified by:
determineTypeForClassin interfaceSchemaRegistry- Returns:
-
determineClassForType
public <T> Class<T> determineClassForType(QName type)
- Specified by:
determineClassForTypein interfaceSchemaRegistry
-
determineCompileTimeClass
public <T> Class<T> determineCompileTimeClass(QName type)
- Specified by:
determineCompileTimeClassin interfaceSchemaRegistry
-
determineClassForItemDefinition
public Class<?> determineClassForItemDefinition(ItemDefinition<?> itemDefinition)
- Specified by:
determineClassForItemDefinitionin interfaceSchemaRegistry
-
selectMoreSpecific
public <ID extends ItemDefinition> ID selectMoreSpecific(ID def1, ID def2) throws SchemaException
- Specified by:
selectMoreSpecificin interfaceSchemaRegistry- Throws:
SchemaException
-
selectMoreSpecific
public QName selectMoreSpecific(QName type1, QName type2)
- Specified by:
selectMoreSpecificin interfaceSchemaRegistry
-
compareDefinitions
public <ID extends ItemDefinition> SchemaRegistry.ComparisonResult compareDefinitions(@NotNull ID def1, @NotNull ID def2)
- Specified by:
compareDefinitionsin interfaceSchemaRegistry- Returns:
- null means we cannot decide (types are different, and no compile time class for def1 and/or def2)
-
isAssignableFrom
public boolean isAssignableFrom(@NotNull @NotNull QName superType, @NotNull @NotNull QName subType)Description copied from interface:SchemaRegistryBEWARE: works only with statically-defined types!- Specified by:
isAssignableFromin interfaceSchemaRegistry
-
isAssignableFrom
public boolean isAssignableFrom(@NotNull @NotNull Class<?> superClass, @NotNull @NotNull QName subType)Description copied from interface:SchemaRegistryBEWARE: works only with statically-defined types!- Specified by:
isAssignableFromin interfaceSchemaRegistry
-
unifyTypes
public QName unifyTypes(QName type1, QName type2)
Description copied from interface:SchemaRegistryReturns most specific common supertype for these two. If any of input params is null, it means it is ignored- Specified by:
unifyTypesin interfaceSchemaRegistry- Returns:
- null if unification cannot be done (or if both input types are null)
-
isContainerable
public boolean isContainerable(QName typeName)
- Specified by:
isContainerablein interfaceSchemaRegistry- Returns:
- true if the typeName corresponds to statically-typed class that is Containerable. TODO The utility of this method is questionable. Reconsider its removal/update.
-
createAdHocDefinition
public ItemDefinition<?> createAdHocDefinition(QName elementName, QName typeName, int minOccurs, int maxOccurs)
- Specified by:
createAdHocDefinitionin interfaceSchemaRegistry
-
getValueMetadataTypeName
public QName getValueMetadataTypeName()
-
-