@sap/odata-v4
Version:
OData V4.0 server library
63 lines (49 loc) • 1.85 kB
JavaScript
;
const AbstractEdmStructuredType = require('./AbstractEdmStructuredType');
const EdmTypeKind = require('./EdmType').TypeKind;
const FeatureSupport = require('../FeatureSupport');
/**
* <a href="./../ODataSpecification/odata-v4.0-errata03-os/complete/part3-csdl/odata-v4.0-errata03-os-part3-csdl-complete.html#_Toc453752560">
* OData CSDL # 9.1 Element edm:ComplexType
* </a>
*
* @extends AbstractEdmStructuredType
* @hideconstructor
*/
class EdmComplexType extends AbstractEdmStructuredType {
/**
* Creates an instance of EdmComplexType.
*
* @param {Edm} edm The edm itself
* @param {FullQualifiedName} fqn The full qualified name of this complex type
* @param {CsdlComplexType} csdlComplexType The csdl complex type structure
* @param {Object} configuration Configuration object with additional configuration properties
* @param {string[]} configuration.customAggregates the custom aggregates defined for this type
*/
constructor(edm, fqn, csdlComplexType, configuration) {
super(edm, fqn, EdmTypeKind.COMPLEX, csdlComplexType, configuration);
if (csdlComplexType.navigationProperties && csdlComplexType.navigationProperties.length > 0) {
FeatureSupport.failUnsupported(FeatureSupport.features.NavigationInComplexType);
}
/**
* @type {Edm}
* @private
*/
this._edm = edm;
}
/**
* @override
* @returns {?EdmComplexType}
*/
getBaseType() {
if (this.edmBaseType) {
return this.edmBaseType;
}
if (!this.csdlStructuredType.baseType) {
return null;
}
this.edmBaseType = this._edm.getComplexType(this.csdlStructuredType.baseType);
return this.edmBaseType;
}
}
module.exports = EdmComplexType;