Class UniqueNameFeatureTypeImpl
- All Implemented Interfaces:
AttributeType
,ComplexType
,FeatureType
,PropertyType
- Direct Known Subclasses:
ComplexFeatureTypeImpl
FeatureTypeImpl
that avoids equality tests on feature types with cyclic definitions by
considering features types to be equal if and only if their names are equal.
Users of this class must not create multiple instances with the same name unless they represent the same type, because other parts of the implementation will assume they are equal, and if they are not, Bad Things Will Happen.
It should be noted that app-schema does not support the multiple definition XSD types with the same name. This
restriction allows multiple XSD elements and thus WFS feature types (with different names) to have the same XSD type,
because the XSD type can be recognised by name even if it has a cyclic definition. This simplified equality testing
allows FeatureTypeCache
to handle these types, despite their cyclic definition preventing a full recursive
implementation of equals(Object)
equals(). Unit test coverage is in GeoServer app-schema-test
DuplicateTypeTest.
- Author:
- Ben Caradoc-Davies (CSIRO Earth Science and Resource Engineering)
-
Field Summary
Fields inherited from class AttributeTypeImpl
identified
Fields inherited from class PropertyTypeImpl
binding, description, isAbstract, name, restrictions, superType, userData
-
Constructor Summary
ConstructorsConstructorDescriptionUniqueNameFeatureTypeImpl
(Name name, Collection<PropertyDescriptor> schema, GeometryDescriptor defaultGeometry, boolean isAbstract, List<Filter> restrictions, AttributeType superType, InternationalString description) -
Method Summary
Modifier and TypeMethodDescriptionboolean
Delegates to the type nameName.equals(Object)
.int
hashCode()
Delegates to type nameName.hashCode()
.Methods inherited from class FeatureTypeImpl
getCoordinateReferenceSystem, getGeometryDescriptor
Methods inherited from class ComplexTypeImpl
getBinding, getDescriptor, getDescriptor, getDescriptors, isInline, toString
Methods inherited from class AttributeTypeImpl
createDefaultValue, getSuper, isIdentified, parse
Methods inherited from class PropertyTypeImpl
getDescription, getName, getRestrictions, getUserData, isAbstract
Methods inherited from interface AttributeType
getSuper
Methods inherited from interface ComplexType
getBinding, getDescriptor, getDescriptor, getDescriptors, isInline
Methods inherited from interface FeatureType
isIdentified
Methods inherited from interface PropertyType
getDescription, getName, getRestrictions, getUserData, isAbstract
-
Constructor Details
-
UniqueNameFeatureTypeImpl
public UniqueNameFeatureTypeImpl(Name name, Collection<PropertyDescriptor> schema, GeometryDescriptor defaultGeometry, boolean isAbstract, List<Filter> restrictions, AttributeType superType, InternationalString description)
-
-
Method Details
-
hashCode
public int hashCode()Delegates to type nameName.hashCode()
.- Specified by:
hashCode
in interfacePropertyType
- Overrides:
hashCode
in classFeatureTypeImpl
- Returns:
- getName().hashCode()
- See Also:
-
equals
Delegates to the type nameName.equals(Object)
.- Specified by:
equals
in interfacePropertyType
- Overrides:
equals
in classFeatureTypeImpl
- Parameters:
other
- the object to be tested for equality.- Returns:
- whether other is equal to this attribute Type.
- See Also:
-