@ui5/task-adaptation
Version:
Custom task for ui5-builder which allows building UI5 Flexibility Adaptation Projects for SAP BTP, Cloud Foundry environment
41 lines • 1.48 kB
JavaScript
import MetadataJsonUtil from "../converter/metadataJsonUtil.js";
import crc16 from "crc/crc16";
export default class MakeAnnotationNamespaceUnique {
transform({ json, uri }) {
const uniquePart = crc16(uri).toString(16);
// First add current schema as reference
const schema = MetadataJsonUtil.getSchemaNode(json);
const references = this.getReferences(json);
references.push(this.createReference(schema, uri));
// Then rename the namespace/alias
schema._attributes.Namespace += "." + uniquePart;
delete schema._attributes["Alias"];
return json;
}
createReference(schema, uri) {
const attributes = {
Namespace: schema._attributes.Namespace
};
if (schema._attributes.Alias) {
attributes.Alias = schema._attributes.Alias;
}
;
return {
_attributes: {
Uri: uri
},
"edmx:Include": {
_attributes: attributes
}
};
}
getReferences(json) {
const REFERENCE_NODE_NAME = "edmx:Reference";
const references = MetadataJsonUtil.getEdmx(json)[REFERENCE_NODE_NAME];
if (!Array.isArray(references)) {
MetadataJsonUtil.getEdmx(json)[REFERENCE_NODE_NAME] = [references];
}
return MetadataJsonUtil.getEdmx(json)[REFERENCE_NODE_NAME];
}
}
//# sourceMappingURL=makeAnnotationNamespaceUnique.js.map