Class UniqueNameFeatureTypeImpl
- Object
-
- PropertyTypeImpl
-
- AttributeTypeImpl
-
- ComplexTypeImpl
-
- FeatureTypeImpl
-
- UniqueNameFeatureTypeImpl
-
- All Implemented Interfaces:
AttributeType
,ComplexType
,FeatureType
,PropertyType
- Direct Known Subclasses:
ComplexFeatureTypeImpl
public class UniqueNameFeatureTypeImpl extends FeatureTypeImpl
A specialisation ofFeatureTypeImpl
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 ofequals(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
Constructors Constructor Description UniqueNameFeatureTypeImpl(Name name, Collection<PropertyDescriptor> schema, GeometryDescriptor defaultGeometry, boolean isAbstract, List<Filter> restrictions, AttributeType superType, InternationalString description)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(Object other)
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 Detail
-
UniqueNameFeatureTypeImpl
public UniqueNameFeatureTypeImpl(Name name, Collection<PropertyDescriptor> schema, GeometryDescriptor defaultGeometry, boolean isAbstract, List<Filter> restrictions, AttributeType superType, InternationalString description)
-
-
Method Detail
-
hashCode
public int hashCode()
Delegates to type nameName.hashCode()
.- Specified by:
hashCode
in interfacePropertyType
- Overrides:
hashCode
in classFeatureTypeImpl
- Returns:
- getName().hashCode()
- See Also:
FeatureTypeImpl.hashCode()
-
equals
public boolean equals(Object other)
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:
FeatureTypeImpl.equals(java.lang.Object)
-
-