pathSb.append(" \"200\":\n");
pathSb.append(" description: successful operation\n");
pathSb.append(" schema:\n");
- pathSb.append(" $ref: \"#/getDefinitions/" + xmlRootElementName + "\"\n");
+ pathSb.append(" $ref: \"#/definitions/" + xmlRootElementName + "\"\n");
pathSb.append(" \"default\":\n");
pathSb.append(" " + GenerateXsd.getResponsesUrl());
if ( StringUtils.isNotEmpty(pathParams) || StringUtils.isNotEmpty(queryParams)) {
if (namespaceFilter != null && (!namespaceFilter.contains(entry.getKey()))) {
continue;
}
+ logger.debug(
+ "Key: " + entry.getKey() + "Test: " + (entry.getKey() == "relationship-dict"));
+ if (entry.getKey().matches("relationship-dict")) {
+ String jb = entry.getValue();
+ logger.debug("Value: " + jb);
+ int ndx = jb.indexOf("related-to-property:");
+ if (ndx > 0) {
+ jb = jb.substring(0, ndx);
+ jb = jb.replaceAll(" +$", "");
+ }
+ logger.debug("Value-after: " + jb);
+ sb.append(jb);
+ continue;
+ }
sb.append(entry.getValue());
}
return sb.toString();
}
+
+ private String getDictionary(String resource) {
+ StringBuffer dictSb = new StringBuffer();
+ dictSb.append(" " + resource + ":\n");
+ dictSb.append(" description: |\n");
+ dictSb.append(" dictionary of " + resource + "\n");
+ dictSb.append(" type: object\n");
+ dictSb.append(" properties:\n");
+ dictSb.append(" " + resource + ":\n");
+ dictSb.append(" type: array\n");
+ dictSb.append(" items:\n");
+ dictSb.append(" $ref: \"#/definitions/" + resource + "-dict\"\n");
+ return dictSb.toString();
+ }
private String processJavaTypeElementSwagger(String javaTypeName, Element javaTypeElement,
StringBuffer pathSb, StringBuffer definitionsSb, String path, String tag, String opId,
// pathParams.toString())+sbParameters.toString()); //cp8128 don't append the pathParams
// to sbParameters so that child nodes don't contain the parameters from parent
StringBuffer newPathParams = new StringBuffer(sbParameters.toString());
+ String useName;
for (int k = 0; addTypeV != null && k < addTypeV.size(); ++k) {
String addType = addTypeV.elementAt(k);
namespaceFilter.add(getXmlRootElementName(addType));
} else if (getItemName == null) {
++propertyCnt;
sbProperties.append(" " + getXmlRootElementName(addType) + ":\n");
- sbProperties.append(" type: array\n items:\n");
- sbProperties.append(" $ref: \"#/definitions/"
+ if ( "RelationshipList".equals(addType)) {
+ sbProperties.append(" type: object\n");
+ sbProperties.append(" $ref: \"#/definitions/"
+ + itemName + "\"\n");
+ } else {
+ sbProperties.append(" type: array\n items:\n");
+ sbProperties.append(" $ref: \"#/definitions/"
+ (itemName == "" ? "aai-internal" : itemName) + "\"\n");
+ }
if (StringUtils.isNotEmpty(elementDescription)) {
sbProperties
.append(" description: " + elementDescription + "\n");
processJavaTypeElementSwagger(addType, getJavaTypeElementSwagger(addType),
pathSb, definitionsSb, path, tag == null ? useTag : tag, useOpId, null,
newPathParams, validEdges);
- sbProperties.append(" " + getXmlRootElementName(addType) + ":\n");
- sbProperties.append(" type: array\n items: \n");
- sbProperties.append(" $ref: \"#/definitions/"
- + getXmlRootElementName(addType) + "\"\n");
+ useName = getXmlRootElementName(addType);
+ sbProperties.append(" " + useName + ":\n");
+ if ( "relationship".equals(useName)) {
+ sbProperties.append(" type: object\n");
+ sbProperties.append(" $ref: \"#/definitions/relationship\"\n");
+ } else {
+ sbProperties.append(" type: array\n items: \n");
+ sbProperties.append(" $ref: \"#/definitions/"
+ + getXmlRootElementName(addType) + "\"\n");
+ }
if (StringUtils.isNotEmpty(elementDescription)) {
sbProperties
.append(" description: " + elementDescription + "\n");
return null;
}
boolean processingInventoryDef = false;
+ String dict = null;
if (xmlRootElementName.equals("inventory")) {
// inventory properties for each oxm to be concatenated
processingInventoryDef = true;
definitionsLocalSb.append(" " + xmlRootElementName + ":\n");
definitionsLocalSb.append(" properties:\n");
}
-
+ } else if (xmlRootElementName.equals("relationship")) {
+ definitionsSb.append(" " + "relationship-dict" + ":\n");
+ definitionsLocalSb.append(" " + "relationship-dict" + ":\n");
+ dict = getDictionary(xmlRootElementName);
} else {
definitionsSb.append(" " + xmlRootElementName + ":\n");
definitionsLocalSb.append(" " + xmlRootElementName + ":\n");
if (xmlRootElementName.equals("inventory")) {
// will add to javaTypeDefinitions at end
inventoryDefSb.append(definitionsLocalSb.toString());
+ } else if (xmlRootElementName.equals("relationship")) {
+ javaTypeDefinitions.put(xmlRootElementName, dict);
+ javaTypeDefinitions.put(xmlRootElementName + "-dict",
+ definitionsLocalSb.toString());
} else {
javaTypeDefinitions.put(xmlRootElementName, definitionsLocalSb.toString());
}
private String tag;
private String path;
private String pathParams;
+ private String prefixForPatch;
- public PatchOperation(String useOpId, String xmlRootElementName, String tag, String path, String pathParams) {
- super();
- this.useOpId = useOpId;
- this.xmlRootElementName = xmlRootElementName;
- this.tag = tag;
- this.path = path;
- this.pathParams = pathParams;
+ public PatchOperation(String useOpId, String xmlRootElementName, String tag, String path, String pathParams) {
+ super();
+ this.useOpId = useOpId;
+ this.xmlRootElementName = xmlRootElementName;
+ this.tag = tag;
+ this.path = path;
+ this.pathParams = pathParams;
+ this.prefixForPatch = "";
+ }
+ public void setPrefixForPatchRef(String prefixForPatchRef) {
+ this.prefixForPatch = prefixForPatchRef;
}
-
+
public String toString() {
StringTokenizer st;
st = new StringTokenizer(path, "/");
pathSb.append(" description: " + xmlRootElementName + " object that needs to be updated."+relationshipExamplesSb.toString()+"\n");
pathSb.append(" required: true\n");
pathSb.append(" schema:\n");
- pathSb.append(" $ref: \"#/patchDefinitions/" + xmlRootElementName + "\"\n");
+ pathSb.append(" $ref: \"#/definitions/" + prefixForPatch + xmlRootElementName + "\"\n");
return pathSb.toString();
}
}
}
}
}
+ if ( pathDescriptionProperty != null ) {
+ //suppress non-printable characters in a description
+ String replaceDescription = pathDescriptionProperty.replaceAll("[^\\p{ASCII}]", "");
+ return replaceDescription;
+ }
return pathDescriptionProperty;
}
public Vector<String> getIndexedProps() {
}
return sbParameter.toString();
}
-
+
public String getPathParamYAML(String elementDescription) {
+ return getPathParamYAML(elementDescription, null);
+ }
+
+ public String getPathParamYAML(String elementDescription, String overrideName) {
+ // updated to allow caller to provide parameter name to use in API
StringBuffer sbParameter = new StringBuffer();
- sbParameter.append((" - name: " + this.getAttribute("name") + "\n"));
+ if ( overrideName == null ) {
+ overrideName = this.getAttribute("name");
+ }
+ sbParameter.append((" - name: " + overrideName + "\n"));
sbParameter.append((" in: path\n"));
if ( elementDescription != null && elementDescription.length() > 0 )
sbParameter.append((" description: " + elementDescription + "\n"));
}
+
private static final String yaml_dir = (((System.getProperty("user.dir") != null)
&& (!System.getProperty("user.dir").contains(normalStartDir))) ? autoGenRoot : root)
+ "/aai_swagger_yaml";
+ private final String patchDefinePrefix = "zzzz-patch-";
private StringBuilder inventoryDefSb = null;
private String basePath;
}
sb.append(entry.getValue());
}
-
- sb.append("patchDefinitions:\n");
- for (Map.Entry<String, String> entry : sortedJavaTypeDefinitions.entrySet()) {
- if (namespaceFilter != null && (!namespaceFilter.contains(entry.getKey()))) {
- continue;
- }
- String jb = entry.getValue().replaceAll("/definitions/", "/patchDefinitions/");
- int ndx = jb.indexOf("relationship-list:");
- if (ndx > 0) {
- jb = jb.substring(0, ndx);
- jb = jb.replaceAll(" +$", "");
- }
- int ndx1 = jb.indexOf("resource-version:");
- logger.debug("Key: " + entry.getKey() + " index: " + ndx1);
- logger.debug("Value: " + jb);
- if (ndx1 > 0) {
- jb = jb.substring(0, ndx1);
- jb = jb.replaceAll(" +$", "");
- }
- logger.debug("Value-after: " + jb);
- sb.append(jb);
- }
-
- sb.append("getDefinitions:\n");
- for (Map.Entry<String, String> entry : sortedJavaTypeDefinitions.entrySet()) {
- if (namespaceFilter != null && (!namespaceFilter.contains(entry.getKey()))) {
- continue;
- }
- String jb = entry.getValue().replaceAll("/definitions/", "/getDefinitions/");
- sb.append(jb);
- }
return sb.toString();
}
String xmlRootElementName = getXMLRootElementName(javaTypeElement);
StringBuilder definitionsLocalSb = new StringBuilder(256);
+ StringBuilder definitionsLocalPatchSb = new StringBuilder(256);
String useTag = null;
String useOpId = null;
NodeList xmlElementNodes = parentElement.getElementsByTagName("xml-element");
StringBuffer sbParameters = new StringBuffer();
+ StringBuffer sbPathParameters = new StringBuffer(); // separate naming path parameters from name of parameter in the schema
StringBuffer sbRequired = new StringBuffer();
+
int requiredCnt = 0;
int propertyCnt = 0;
StringBuffer sbProperties = new StringBuffer();
+ int patchPropertyCnt = 0; // manage payload properties separately for patch
+ StringBuffer sbPropertiesPatch = new StringBuffer();
if (appliedPaths.containsKey(path)) {
return null;
+ appliedPaths.containsKey(path));
appliedPaths.put(path, xmlRootElementName);
}
-
+
Vector<String> addTypeV = null;
+ String modifiedName;
+ String replaceDescription;
for (int i = 0; i < xmlElementNodes.getLength(); ++i) {
XSDElement xmlElementElement = new XSDElement((Element) xmlElementNodes.item(i));
if (!xmlElementElement.getParentNode().isSameNode(parentElement)) {
if (getItemName == null) {
addTypeV = xmlElementElement.getAddTypes(v.toString());
}
+ // use alternate name for parameter if already in the path string
+ modifiedName = "/{" + xmlElementElement.getAttribute("name") + "}";
+ if ( path.contains(modifiedName)) {
+ modifiedName = path.substring(path.lastIndexOf('/')+1) + "." + xmlElementElement.getAttribute("name");
+ } else {
+ modifiedName = xmlElementElement.getAttribute("name");
+ }
if ("true".equals(xmlElementElement.getAttribute("xml-key"))) {
- path += "/{" + xmlElementElement.getAttribute("name") + "}";
+ path += "/{" + modifiedName + "}";
}
logger.debug("path: " + path);
logger.debug("xmlElementElement.getAttribute(required):"
+ xmlElementElement.getAttribute("required"));
+ if ("true".equals(xmlElementElement.getAttribute("xml-key"))) {
+ sbParameters.append(xmlElementElement.getPathParamYAML(elementDescription));
+ sbPathParameters.append(xmlElementElement.getPathParamYAML(elementDescription, modifiedName));
+ }
if (("true").equals(xmlElementElement.getAttribute("required"))) {
if (requiredCnt == 0) {
sbRequired.append(" required:\n");
}
}
}
-
- if ("true".equals(xmlElementElement.getAttribute("xml-key"))) {
- sbParameters.append(xmlElementElement.getPathParamYAML(elementDescription));
- }
if (indexedProps != null
&& indexedProps.contains(xmlElementElement.getAttribute("name"))) {
containerProps.add(xmlElementElement.getQueryParamYAML());
}
if (xmlElementElement.isStandardType()) {
sbProperties.append(xmlElementElement.getTypePropertyYAML());
+ if ( !"resource-version".equals(xmlElementElement.getAttribute("name"))) {
+ sbPropertiesPatch.append(xmlElementElement.getTypePropertyYAML());
+ ++patchPropertyCnt;
+ }
++propertyCnt;
}
StringBuffer newPathParams = new StringBuffer(
- (pathParams == null ? "" : pathParams.toString()) + sbParameters.toString());
+ (pathParams == null ? "" : pathParams.toString()) + sbPathParameters.toString());
+ String useName;
for (int k = 0; addTypeV != null && k < addTypeV.size(); ++k) {
String addType = addTypeV.elementAt(k);
namespaceFilter.add(getXmlRootElementName(addType));
} else if (getItemName == null) {
++propertyCnt;
sbProperties.append(" " + getXmlRootElementName(addType) + ":\n");
- sbProperties.append(" type: array\n items:\n");
- sbProperties.append(" $ref: \"#/definitions/"
+ if ( "RelationshipList".equals(addType)) {
+ sbProperties.append(" type: object\n");
+ sbProperties.append(" $ref: \"#/definitions/"
+ + itemName + "\"\n");
+ sbPropertiesPatch.append(" " + getXmlRootElementName(addType) + ":\n");
+ sbPropertiesPatch.append(" type: object\n");
+ sbPropertiesPatch.append(" $ref: \"#/definitions/"
+ + itemName + "\"\n");
+ ++patchPropertyCnt;
+ } else {
+ if ( "relationship".equals(itemName) ) {
+ System.out.println(v + "-relationship added as array for getItemName null");
+ }
+ sbProperties.append(" type: array\n items:\n");
+ sbProperties.append(" $ref: \"#/definitions/"
+ (itemName == "" ? "inventory-item-data" : itemName) + "\"\n");
+ }
if (StringUtils.isNotEmpty(elementDescription)) {
sbProperties
.append(" description: " + elementDescription + "\n");
processJavaTypeElementSwagger(addType, getJavaTypeElementSwagger(addType),
pathSb, definitionsSb, path, tag == null ? useTag : tag, useOpId, null,
newPathParams, validEdges);
- sbProperties.append(" " + getXmlRootElementName(addType) + ":\n");
- sbProperties.append(" type: array\n items: \n");
- sbProperties.append(" $ref: \"#/definitions/"
- + getXmlRootElementName(addType) + "\"\n");
- if (StringUtils.isNotEmpty(elementDescription)) {
- sbProperties
- .append(" description: " + elementDescription + "\n");
+ useName = getXmlRootElementName(addType);
+ sbProperties.append(" " + useName + ":\n");
+ if ( "relationship".equals(useName)) {
+ sbProperties.append(" type: object\n");
+ sbProperties.append(" $ref: \"#/definitions/relationship\"\n");
+ sbPropertiesPatch.append(" type: object\n");
+ sbPropertiesPatch.append(" $ref: \"#/definitions/relationship\"\n");
+ ++patchPropertyCnt;
+ } else {
+ sbProperties.append(" type: array\n items: \n");
+ sbProperties.append(" $ref: \"#/definitions/"
+ + getXmlRootElementName(addType) + "\"\n");
+ if (StringUtils.isNotEmpty(elementDescription)) {
+ sbProperties
+ .append(" description: " + elementDescription + "\n");
+ }
}
} else {
if (pathParams == null) {
pathParams = new StringBuffer();
}
- pathParams.append(sbParameters);
+ pathParams.append(sbPathParameters);
}
GetOperation get = new GetOperation(useOpId, xmlRootElementName, tag, path,
pathParams == null ? "" : pathParams.toString());
// add PATCH
PatchOperation patch = new PatchOperation(useOpId, xmlRootElementName, tag, path,
pathParams == null ? "" : pathParams.toString());
+ patch.setPrefixForPatchRef(patchDefinePrefix);
pathSb.append(patch.toString());
// add DELETE
DeleteOperation del = new DeleteOperation(useOpId, xmlRootElementName, tag, path,
if (pathDescriptionProperty != null) {
definitionsSb.append(" " + pathDescriptionProperty + "\n");
- definitionsLocalSb.append(" " + pathDescriptionProperty + "\n");
+ definitionsLocalSb.append(" " + pathDescriptionProperty + "\n");
}
- definitionsSb.append(validEdges);
- definitionsLocalSb.append(validEdges);
+ if (StringUtils.isNotEmpty(validEdges) ) {
+ definitionsSb.append(validEdges);
+ definitionsLocalSb.append(validEdges);
+ }
+ }
+ if ( patchPropertyCnt > 0 ) {
+ definitionsLocalPatchSb.append(" " + patchDefinePrefix + xmlRootElementName + ":\n");
+ if (StringUtils.isNotEmpty(pathDescriptionProperty) || StringUtils.isNotEmpty(validEdges)) {
+ definitionsLocalPatchSb.append(" description: |\n");
+ }
+ if (pathDescriptionProperty != null) {
+ definitionsLocalPatchSb.append(" " + pathDescriptionProperty + "\n");
+ }
+ if (StringUtils.isNotEmpty(validEdges) ) {
+ definitionsLocalPatchSb.append(validEdges);
+ }
+ definitionsLocalPatchSb.append(" properties:\n");
}
if (requiredCnt > 0) {
definitionsLocalSb.append(" properties:\n");
}
definitionsLocalSb.append(sbProperties);
+ definitionsLocalPatchSb.append(sbPropertiesPatch);
}
try {
namespaceFilter.add(xmlRootElementName);
definitionsLocalSb.toString());
} else {
javaTypeDefinitions.put(xmlRootElementName, definitionsLocalSb.toString());
+ if ( !"relationship-list".equals(xmlRootElementName)) {
+ javaTypeDefinitions.put(patchDefinePrefix + xmlRootElementName, definitionsLocalPatchSb.toString());
+ }
}
} catch (Exception e) {
e.printStackTrace();
}
}
+
@Parameters
public static Collection<String []> testConditions() {
String inputs [][] = {
- {"NetworkGenericVnfsGenericVnf","generic-vnf","Network","/network/generic-vnfs/generic-vnf/{vnf-id}"," - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__"," /network/generic-vnfs/generic-vnf/{vnf-id}:\n get:\n tags:\n - Network\n summary: returns generic-vnf\n description: returns generic-vnf\n operationId: getNetworkGenericVnfsGenericVnf\n produces:\n - application/json\n - application/xml\n responses:\n \"200\":\n description: successful operation\n schema:\n $ref: \"#/getDefinitions/generic-vnf\"\n \"default\":\n null parameters:\n - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__"},
+ {"NetworkGenericVnfsGenericVnf","generic-vnf","Network","/network/generic-vnfs/generic-vnf/{vnf-id}"," - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__"," /network/generic-vnfs/generic-vnf/{vnf-id}:\n get:\n tags:\n - Network\n summary: returns generic-vnf\n description: returns generic-vnf\n operationId: getNetworkGenericVnfsGenericVnf\n produces:\n - application/json\n - application/xml\n responses:\n \"200\":\n description: successful operation\n schema:\n $ref: \"#/definitions/generic-vnf\"\n \"default\":\n null parameters:\n - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__"},
{"GenericVnf","generic-vnf","","/generic-vnf/{vnf-id}"," - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__",""},
- {"CloudInfrastructurePserversPserverPInterfaces","p-interfaces","CloudInfrastructure","/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces"," - name: hostname\n in: path\n description: Value from executing hostname on the compute node.\n required: true\n type: string\n example: __HOSTNAME__"," /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces:\n get:\n tags:\n - CloudInfrastructure\n summary: returns p-interfaces\n description: returns p-interfaces\n operationId: getCloudInfrastructurePserversPserverPInterfaces\n produces:\n - application/json\n - application/xml\n responses:\n \"200\":\n description: successful operation\n schema:\n $ref: \"#/getDefinitions/p-interfaces\"\n \"default\":\n null parameters:\n - name: hostname\n in: path\n description: Value from executing hostname on the compute node.\n required: true\n type: string\n example: __HOSTNAME__ - name: interface-name\n in: query\n description:\n required: false\n type: string - name: prov-status\n in: query\n description:\n required: false\n type: string"},
+ {"CloudInfrastructurePserversPserverPInterfaces","p-interfaces","CloudInfrastructure","/cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces"," - name: hostname\n in: path\n description: Value from executing hostname on the compute node.\n required: true\n type: string\n example: __HOSTNAME__"," /cloud-infrastructure/pservers/pserver/{hostname}/p-interfaces:\n get:\n tags:\n - CloudInfrastructure\n summary: returns p-interfaces\n description: returns p-interfaces\n operationId: getCloudInfrastructurePserversPserverPInterfaces\n produces:\n - application/json\n - application/xml\n responses:\n \"200\":\n description: successful operation\n schema:\n $ref: \"#/definitions/p-interfaces\"\n \"default\":\n null parameters:\n - name: hostname\n in: path\n description: Value from executing hostname on the compute node.\n required: true\n type: string\n example: __HOSTNAME__ - name: interface-name\n in: query\n description:\n required: false\n type: string - name: prov-status\n in: query\n description:\n required: false\n type: string"},
// {"","ctag-pool","","","",""},
// {"","pserver","","","",""},
// {"","oam-network","","","",""},
StringBuilder sb = new StringBuilder(32368);
sb.append(YAMLheader());
sb.append(YAMLops());
-// sb.append(YAMLdefs());
-// sb.append(YAMLpatchDefs());
sb.append(YAMLgetDefs());
return sb.toString();
}
public String YAMLheader() {
StringBuilder sb = new StringBuilder(1500);
- sb.append("swagger: \"2.0\"\n");
- sb.append("info:\n");
- sb.append(" description: |\n");
- sb.append("\n");
- sb.append(" [Differences versus the previous schema version](apidocs/aai_swagger_v11.diff)\n");
- sb.append("\n");
- sb.append(" Copyright © 2017-18 AT&T Intellectual Property. All rights reserved.\n");
- sb.append("\n");
- sb.append(" Licensed under the Creative Commons License, Attribution 4.0 Intl. (the "License"); you may not use this documentation except in compliance with the License.\n");
- sb.append("\n");
- sb.append(" You may obtain a copy of the License at\n");
- sb.append("\n");
- sb.append(" (https://creativecommons.org/licenses/by/4.0/)\n");
- sb.append("\n");
- sb.append(" Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n");
- sb.append("\n");
- sb.append(" This document is best viewed with Firefox or Chrome. Nodes can be found by appending /#/definitions/node-type-to-find to the path to this document. Edge definitions can be found with the node definitions.\n");
- sb.append(" version: \"v11\"\n");
- sb.append(" title: Active and Available Inventory REST API\n");
- sb.append(" license:\n");
- sb.append(" name: Apache 2.0\n");
- sb.append(" url: http://www.apache.org/licenses/LICENSE-2.0.html\n");
- sb.append(" contact:\n");
- sb.append(" name:\n");
- sb.append(" url:\n");
- sb.append(" email:\n");
- sb.append("host:\n");
- sb.append("basePath: /aai/v11\n");
- sb.append("schemes:\n");
- sb.append(" - https\n");
- sb.append("paths:\n");
+ sb.append("swagger: \"2.0\"\n");
+ sb.append("info:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" description: |\n");
+ sb.append("\n");
+ sb.append(" [Differences versus the previous schema version](apidocs/aai_swagger_v11.diff)" + OxmFileProcessor.DOUBLE_LINE_SEPARATOR);
+ sb.append(" Copyright © 2017-18 AT&T Intellectual Property. All rights reserved.\n\n");
+ sb.append(" Licensed under the Creative Commons License, Attribution 4.0 Intl. (the "License"); you may not use this documentation except in compliance with the License." + OxmFileProcessor.DOUBLE_LINE_SEPARATOR);
+ sb.append(" You may obtain a copy of the License at\n");
+ sb.append("\n");
+ sb.append(" (https://creativecommons.org/licenses/by/4.0/)" + OxmFileProcessor.DOUBLE_LINE_SEPARATOR);
+ sb.append(" Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n\n");
+ sb.append(" This document is best viewed with Firefox or Chrome. Nodes can be found by appending /#/definitions/node-type-to-find to the path to this document. Edge definitions can be found with the node definitions." + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" version: \"v11\"" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" title: Active and Available Inventory REST API" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" license:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" name: Apache 2.0" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" url: http://www.apache.org/licenses/LICENSE-2.0.html" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" contact:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" name:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" url:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" email:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append("host:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append("basePath: /aai/v11" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append("schemes:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" - https\n");
+ sb.append("paths:" + OxmFileProcessor.LINE_SEPARATOR);
return sb.toString();
}
sb.append(" type: string\n");
return sb.toString();
}
- public String YAMLdefs() {
- StringBuilder sb = new StringBuilder(8092);
- sb.append("definitions:\n");
- sb.append(" business:\n");
- sb.append(" description: |\n");
- sb.append(" Namespace for business related constructs\n");
- sb.append(" properties:\n");
- sb.append(" customers:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/definitions/customer\"\n");
- sb.append(" customer:\n");
- sb.append(" description: |\n");
- sb.append(" customer identifiers to provide linkage back to BSS information.\n");
- sb.append(" ###### Related Nodes\n");
- sb.append(" - FROM service-subscription (CHILD of customer, service-subscription BelongsTo customer, MANY2ONE)(1)\n");
- sb.append("\n");
- sb.append(" -(1) IF this CUSTOMER node is deleted, this FROM node is DELETED also\n");
- sb.append(" required:\n");
- sb.append(" - global-customer-id\n");
- sb.append(" - subscriber-name\n");
- sb.append(" - subscriber-type\n");
- sb.append(" properties:\n");
- sb.append(" global-customer-id:\n");
- sb.append(" type: string\n");
- sb.append(" description: Global customer id used across to uniquely identify customer.\n");
- sb.append(" subscriber-name:\n");
- sb.append(" type: string\n");
- sb.append(" description: Subscriber name, an alternate way to retrieve a customer.\n");
- sb.append(" subscriber-type:\n");
- sb.append(" type: string\n");
- sb.append(" description: Subscriber type, a way to provide VID with only the INFRA customers.\n");
- sb.append(" resource-version:\n");
- sb.append(" type: string\n");
- sb.append(" description: Used for optimistic concurrency. Must be empty on create, valid on update and delete.\n");
- sb.append(" service-subscriptions:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/definitions/service-subscription\"\n");
- sb.append(" customers:\n");
- sb.append(" description: |\n");
- sb.append(" Collection of customer identifiers to provide linkage back to BSS information.\n");
- sb.append(" properties:\n");
- sb.append(" customer:\n");
- sb.append(" type: array\n");
- sb.append(" items: \n");
- sb.append(" $ref: \"#/definitions/customer\"\n");
- sb.append(" inventory:\n");
- sb.append(" properties:\n");
- sb.append(" business:\n");
- sb.append(" type: object\n");
- sb.append(" $ref: \"#/definitions/business\"\n");
- sb.append(" nodes:\n");
- sb.append(" properties:\n");
- sb.append(" inventory-item-data:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/definitions/inventory-item-data\"\n");
- sb.append(" service-subscription:\n");
- sb.append(" description: |\n");
- sb.append(" Object that group service instances.\n");
- sb.append(" ###### Related Nodes\n");
- sb.append(" - TO customer (PARENT of service-subscription, service-subscription BelongsTo customer, MANY2ONE)(4)\n");
- sb.append(" - TO tenant( service-subscription Uses tenant, MANY2MANY)\n");
- sb.append(" - FROM service-instance (CHILD of service-subscription, service-instance BelongsTo service-subscription, MANY2ONE)(1)\n");
- sb.append("\n");
- sb.append(" -(1) IF this SERVICE-SUBSCRIPTION node is deleted, this FROM node is DELETED also\n");
- sb.append(" -(4) IF this TO node is deleted, this SERVICE-SUBSCRIPTION is DELETED also\n");
- sb.append(" required:\n");
- sb.append(" - service-type\n");
- sb.append(" properties:\n");
- sb.append(" service-type:\n");
- sb.append(" type: string\n");
- sb.append(" description: Value defined by orchestration to identify this service.\n");
- sb.append(" temp-ub-sub-account-id:\n");
- sb.append(" type: string\n");
- sb.append(" description: This property will be deleted from A&AI in the near future. Only stop gap solution.\n");
- sb.append(" resource-version:\n");
- sb.append(" type: string\n");
- sb.append(" description: Used for optimistic concurrency. Must be empty on create, valid on update and delete.\n");
- sb.append(" service-subscriptions:\n");
- sb.append(" description: |\n");
- sb.append(" Collection of objects that group service instances.\n");
- sb.append(" properties:\n");
- sb.append(" service-subscription:\n");
- sb.append(" type: array\n");
- sb.append(" items: \n");
- sb.append(" $ref: \"#/definitions/service-subscription\"\n");
- return sb.toString();
- }
- public String YAMLpatchDefs() {
- StringBuilder sb = new StringBuilder(8092);
- sb.append("patchDefinitions:\n");
- sb.append(" business:\n");
- sb.append(" description: |\n");
- sb.append(" Namespace for business related constructs\n");
- sb.append(" properties:\n");
- sb.append(" customers:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/patchDefinitions/customer\"\n");
- sb.append(" customer:\n");
- sb.append(" description: |\n");
- sb.append(" customer identifiers to provide linkage back to BSS information.\n");
- sb.append(" ###### Related Nodes\n");
- sb.append(" - FROM service-subscription (CHILD of customer, service-subscription BelongsTo customer, MANY2ONE)(1)\n");
- sb.append("\n");
- sb.append(" -(1) IF this CUSTOMER node is deleted, this FROM node is DELETED also\n");
- sb.append(" required:\n");
- sb.append(" - global-customer-id\n");
- sb.append(" - subscriber-name\n");
- sb.append(" - subscriber-type\n");
- sb.append(" properties:\n");
- sb.append(" global-customer-id:\n");
- sb.append(" type: string\n");
- sb.append(" description: Global customer id used across to uniquely identify customer.\n");
- sb.append(" subscriber-name:\n");
- sb.append(" type: string\n");
- sb.append(" description: Subscriber name, an alternate way to retrieve a customer.\n");
- sb.append(" subscriber-type:\n");
- sb.append(" type: string\n");
- sb.append(" description: Subscriber type, a way to provide VID with only the INFRA customers.\n");
- sb.append(" customers:\n");
- sb.append(" description: |\n");
- sb.append(" Collection of customer identifiers to provide linkage back to BSS information.\n");
- sb.append(" properties:\n");
- sb.append(" customer:\n");
- sb.append(" type: array\n");
- sb.append(" items: \n");
- sb.append(" $ref: \"#/patchDefinitions/customer\"\n");
- sb.append(" inventory:\n");
- sb.append(" properties:\n");
- sb.append(" business:\n");
- sb.append(" type: object\n");
- sb.append(" $ref: \"#/patchDefinitions/business\"\n");
- sb.append(" nodes:\n");
- sb.append(" properties:\n");
- sb.append(" inventory-item-data:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/patchDefinitions/inventory-item-data\"\n");
- sb.append(" service-subscription:\n");
- sb.append(" description: |\n");
- sb.append(" Object that group service instances.\n");
- sb.append(" ###### Related Nodes\n");
- sb.append(" - TO customer (CHILD of customer, service-subscription BelongsTo customer, MANY2ONE)(4)\n");
- sb.append(" - TO tenant( service-subscription Uses tenant, MANY2MANY)\n");
- sb.append(" - FROM service-instance (CHILD of service-subscription, service-instance BelongsTo service-subscription, MANY2ONE)(1)\n");
- sb.append("\n");
- sb.append(" -(1) IF this SERVICE-SUBSCRIPTION node is deleted, this FROM node is DELETED also\n");
- sb.append(" -(4) IF this TO node is deleted, this SERVICE-SUBSCRIPTION is DELETED also\n");
- sb.append(" required:\n");
- sb.append(" - service-type\n");
- sb.append(" properties:\n");
- sb.append(" service-type:\n");
- sb.append(" type: string\n");
- sb.append(" description: Value defined by orchestration to identify this service.\n");
- sb.append(" temp-ub-sub-account-id:\n");
- sb.append(" type: string\n");
- sb.append(" description: This property will be deleted from A&AI in the near future. Only stop gap solution.\n");
- sb.append(" service-subscriptions:\n");
- sb.append(" description: |\n");
- sb.append(" Collection of objects that group service instances.\n");
- sb.append(" properties:\n");
- sb.append(" service-subscription:\n");
- sb.append(" type: array\n");
- sb.append(" items: \n");
- sb.append(" $ref: \"#/patchDefinitions/service-subscription\"\n");
- return sb.toString();
- }
+
public String YAMLgetDefs() {
StringBuilder sb = new StringBuilder(8092);
sb.append("definitions:\n");
sb.append(" business:\n");
sb.append(" type: object\n");
sb.append(" $ref: \"#/definitions/business\"\n");
- sb.append(" nodes:\n");
- sb.append(" properties:\n");
- sb.append(" inventory-item-data:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/definitions/inventory-item-data\"\n");
+ sb.append(" nodes:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" properties:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" inventory-item-data:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" type: array" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" items:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" $ref: \"#/definitions/inventory-item-data\"" + OxmFileProcessor.LINE_SEPARATOR);
sb.append(" service-subscription:\n");
sb.append(" description: |\n");
sb.append(" Object that group service instances.\n");
@Parameters
public static Collection<String []> testConditions() {
String inputs [][] = {
- {"NetworkGenericVnfsGenericVnf","generic-vnf","Network","/network/generic-vnfs/generic-vnf/{vnf-id}"," - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__"," patch:\n tags:\n - Network\n summary: update an existing generic-vnf\n description: |\n Update an existing generic-vnf\n #\n Note: Endpoints that are not devoted to object relationships support both PUT and PATCH operations.\n The PUT operation will entirely replace an existing object.\n The PATCH operation sends a \"description of changes\" for an existing object. The entire set of changes must be applied. An error result means no change occurs.\n #\n Other differences between PUT and PATCH are:\n #\n - For PATCH, you can send any of the values shown in sample REQUEST body. There are no required values.\n - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.\n - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.\n operationId: UpdateNetworkGenericVnfsGenericVnf\n consumes:\n - application/json\n produces:\n - application/json\n responses:\n \"default\":\n null parameters:\n - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__ - name: body\n in: body\n description: generic-vnf object that needs to be updated.\n required: true\n schema:\n $ref: \"#/patchDefinitions/generic-vnf\"\n"},
+ {"NetworkGenericVnfsGenericVnf","generic-vnf","Network","/network/generic-vnfs/generic-vnf/{vnf-id}"," - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__"," patch:\n tags:\n - Network\n summary: update an existing generic-vnf\n description: |\n Update an existing generic-vnf\n #\n Note: Endpoints that are not devoted to object relationships support both PUT and PATCH operations.\n The PUT operation will entirely replace an existing object.\n The PATCH operation sends a \"description of changes\" for an existing object. The entire set of changes must be applied. An error result means no change occurs.\n #\n Other differences between PUT and PATCH are:\n #\n - For PATCH, you can send any of the values shown in sample REQUEST body. There are no required values.\n - For PATCH, resource-id which is a required REQUEST body element for PUT, must not be sent.\n - PATCH cannot be used to update relationship elements; there are dedicated PUT operations for this.\n operationId: UpdateNetworkGenericVnfsGenericVnf\n consumes:\n - application/json\n produces:\n - application/json\n responses:\n \"default\":\n null parameters:\n - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__ - name: body\n in: body\n description: generic-vnf object that needs to be updated.\n required: true\n schema:\n $ref: \"#/definitions/generic-vnf\"\n"},
// if ( StringUtils.isEmpty(tag) )
{"GenericVnf","generic-vnf","","/generic-vnf/{vnf-id}"," - name: vnf-id\n in: path\n description: Unique id of VNF. This is unique across the graph.\n required: true\n type: string\n example: __VNF-ID__",""},
// Test: if ( !path.endsWith("/relationship") && !path.endsWith("}") )
addEndOfXML(sb);
testXML = sb.toString();
init();
-}
+ }
+
+ public void setUpRelationship( ) throws Exception {
+ StringBuilder sb = new StringBuilder(maxSizeForXml);
+ addNamespaceNoInventory(sb);
+ addRelationship(sb);
+ addRelationshipList(sb);
+ addRelatedToProperty(sb);
+ addRelationshipData(sb);
+ addEndOfXML(sb);
+ testXML = sb.toString();
+ init();
+ }
private void addNamespace(StringBuilder sb){
sb.append("<xml-bindings xmlns=\"http://www.eclipse.org/eclipselink/xsds/persistence/oxm\" package-name=\"inventory.aai.onap.org.v11\" xml-mapping-metadata-complete=\"true\">\n");
sb.append("</java-attributes>\n");
sb.append("</java-type>\n");
}
+
+ private void addNamespaceNoInventory(StringBuilder sb){
+ sb.append("<xml-bindings xmlns=\"http://www.eclipse.org/eclipselink/xsds/persistence/oxm\" package-name=\"inventory.aai.onap.org.v11\" xml-mapping-metadata-complete=\"true\">\n");
+ sb.append("<xml-schema element-form-default=\"QUALIFIED\">\n");
+ sb.append("<xml-ns namespace-uri=\"http://org.onap.aai.inventory/v11\" />\n");
+ sb.append("</xml-schema>\n");
+ sb.append("<java-types>\n");
+ }
private void addBusiness(StringBuilder sb){
sb.append("<java-type name=\"Business\">\n");
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
@RunWith(SpringJUnit4ClassRunner.class)
System.setProperty("AJSC_HOME", ".");
System.setProperty("BUNDLECONFIG_DIR", "src/test/resources/bundleconfig-local");
System.setProperty("aai.service.name", SERVICE_NAME);
+ }
+
+
- XSDElementTest x = new XSDElementTest();
- x.setUp();
- testXML = x.testXML;
- logger.debug(testXML);
- BufferedWriter bw = new BufferedWriter(new FileWriter(OXMFILENAME));
- bw.write(testXML);
- bw.close();
- BufferedWriter bw1 = new BufferedWriter(new FileWriter(EDGEFILENAME));
- bw1.write(EdgeDefs());
- bw1.close();
-
+ @Before
+ public void setUp() throws Exception {
+ XSDElementTest x = new XSDElementTest();
+ x.setUp();
+ testXML = x.testXML;
+ logger.debug(testXML);
+ BufferedWriter bw = new BufferedWriter(new FileWriter(OXMFILENAME));
+ bw.write(testXML);
+ bw.close();
+ BufferedWriter bw1 = new BufferedWriter(new FileWriter(EDGEFILENAME));
+ bw1.write(EdgeDefs());
+ bw1.close();
+ }
+
+ public void setupRelationship() throws Exception{
+ XSDElementTest x = new XSDElementTest();
+ x.setUpRelationship();
+ testXML = x.testXML;
+ logger.debug(testXML);
+ BufferedWriter bw = new BufferedWriter(new FileWriter(OXMFILENAME));
+ bw.write(testXML);
+ bw.close();
+ BufferedWriter bw1 = new BufferedWriter(new FileWriter(EDGEFILENAME));
+ bw1.write(EdgeDefs());
+ bw1.close();
}
- @Before
- public void setUp() throws Exception {
-
- }
-
@Test
public void AtestIngestors() throws EdgeRuleNotFoundException {
Multimap<String, EdgeRule> results = edgeIngestor.getAllRules(schemaVersions.getDefaultVersion());
assertThat("FileContent-TestProcess:\n"+fileContent,fileContent, is(YAMLresult()));
}
-
@Test
public void testYAMLfromOXMFileVersionFile() throws IOException {
String outfileName = "testXML.xml";
}
assertThat("FileContent-OXMStringVersionFile:\n"+fileContent,fileContent, is(YAMLresult()));
}
+
+ @Test
+ public void testRelationshipListYAMLfromOXMStringVersionFile() {
+ try {
+ setupRelationship();
+ } catch (Exception e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ SchemaVersion v = schemaVersions.getAppRootVersion();
+ String apiVersion = v.toString();
+ String fileContent = null;
+ try {
+ yamlFromOxm.setXmlVersion(testXML, v);
+ fileContent = yamlFromOxm.process();
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ boolean matchFound = fileContent.contains(( YAMLRelationshipList()));
+ assertTrue("RelationshipListFormat:\n", matchFound);
+ }
@Test
public void testAppendDefinitions() {
} catch(Exception e) {
e.printStackTrace();
}
- assertThat("Definitions:\n"+definitions,definitions, is(YAMLdefs()+YAMLpatchDefs()+YAMLgetDefs()));
+ assertThat("Definitions:\n"+definitions,definitions, is(YAMLdefs()+YAMLdefsAddPatch()));
}
@Test
sb.append(YAMLheader());
sb.append(YAMLops());
sb.append(YAMLdefs());
- sb.append(YAMLpatchDefs());
- sb.append(YAMLgetDefs());
+ sb.append(YAMLdefsAddPatch());
return sb.toString();
}
public String YAMLheader() {
StringBuilder sb = new StringBuilder(1500);
sb.append("swagger: \"2.0\"\n");
- sb.append("info:\n");
+ sb.append("info:" + OxmFileProcessor.LINE_SEPARATOR);
sb.append(" description: |\n");
sb.append("\n");
- sb.append(" [Differences versus the previous schema version](apidocs/aai_swagger_v11.diff)\n");
- sb.append("\n");
- sb.append(" Copyright © 2017-18 AT&T Intellectual Property. All rights reserved.\n");
- sb.append("\n");
+ sb.append(" [Differences versus the previous schema version](apidocs/aai_swagger_v11.diff)" + OxmFileProcessor.DOUBLE_LINE_SEPARATOR);
+ sb.append(" Copyright © 2017-18 AT&T Intellectual Property. All rights reserved." + OxmFileProcessor.DOUBLE_LINE_SEPARATOR);
sb.append(" Licensed under the Creative Commons License, Attribution 4.0 Intl. (the "License"); you may not use this documentation except in compliance with the License.\n");
sb.append("\n");
sb.append(" You may obtain a copy of the License at\n");
sb.append("\n");
sb.append(" (https://creativecommons.org/licenses/by/4.0/)\n");
sb.append("\n");
- sb.append(" Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.\n");
- sb.append("\n");
- sb.append(" This document is best viewed with Firefox or Chrome. Nodes can be found by appending /#/definitions/node-type-to-find to the path to this document. Edge definitions can be found with the node definitions.\n");
- sb.append(" version: \"v11\"\n");
- sb.append(" title: Active and Available Inventory REST API\n");
- sb.append(" license:\n");
+ sb.append(" Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + OxmFileProcessor.DOUBLE_LINE_SEPARATOR);
+ sb.append(" This document is best viewed with Firefox or Chrome. Nodes can be found by appending /#/definitions/node-type-to-find to the path to this document. Edge definitions can be found with the node definitions." + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" version: \"v11\"" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" title: Active and Available Inventory REST API" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" license:" + OxmFileProcessor.LINE_SEPARATOR);
sb.append(" name: Apache 2.0\n");
- sb.append(" url: http://www.apache.org/licenses/LICENSE-2.0.html\n");
- sb.append(" contact:\n");
- sb.append(" name:\n");
- sb.append(" url:\n");
- sb.append(" email:\n");
- sb.append("host:\n");
- sb.append("basePath: /aai/v11\n");
- sb.append("schemes:\n");
+ sb.append(" url: http://www.apache.org/licenses/LICENSE-2.0.html" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" contact:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" name:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" url:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" email:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append("host:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append("basePath: /aai/v11" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append("schemes:" + OxmFileProcessor.LINE_SEPARATOR);
sb.append(" - https\n");
- sb.append("paths:\n");
+ sb.append("paths:" + OxmFileProcessor.LINE_SEPARATOR);
return sb.toString();
}
sb.append(" \"200\":\n");
sb.append(" description: successful operation\n");
sb.append(" schema:\n");
- sb.append(" $ref: \"#/getDefinitions/service-subscription\"\n");
+ sb.append(" $ref: \"#/definitions/service-subscription\"\n");
sb.append(" \"default\":\n");
sb.append(" null parameters:\n");
sb.append(" - name: global-customer-id\n");
sb.append(" description: service-subscription object that needs to be updated.\n");
sb.append(" required: true\n");
sb.append(" schema:\n");
- sb.append(" $ref: \"#/patchDefinitions/service-subscription\"\n");
+ sb.append(" $ref: \"#/definitions/zzzz-patch-service-subscription\"\n");
sb.append(" delete:\n");
sb.append(" tags:\n");
sb.append(" - Business\n");
sb.append(" \"200\":\n");
sb.append(" description: successful operation\n");
sb.append(" schema:\n");
- sb.append(" $ref: \"#/getDefinitions/service-subscriptions\"\n");
+ sb.append(" $ref: \"#/definitions/service-subscriptions\"\n");
sb.append(" \"default\":\n");
sb.append(" null parameters:\n");
sb.append(" - name: global-customer-id\n");
sb.append(" \"200\":\n");
sb.append(" description: successful operation\n");
sb.append(" schema:\n");
- sb.append(" $ref: \"#/getDefinitions/customer\"\n");
+ sb.append(" $ref: \"#/definitions/customer\"\n");
sb.append(" \"default\":\n");
sb.append(" null parameters:\n");
sb.append(" - name: global-customer-id\n");
sb.append(" description: customer object that needs to be updated.\n");
sb.append(" required: true\n");
sb.append(" schema:\n");
- sb.append(" $ref: \"#/patchDefinitions/customer\"\n");
+ sb.append(" $ref: \"#/definitions/zzzz-patch-customer\"\n");
sb.append(" delete:\n");
sb.append(" tags:\n");
sb.append(" - Business\n");
sb.append(" \"200\":\n");
sb.append(" description: successful operation\n");
sb.append(" schema:\n");
- sb.append(" $ref: \"#/getDefinitions/customers\"\n");
+ sb.append(" $ref: \"#/definitions/customers\"\n");
sb.append(" \"default\":\n");
sb.append(" null parameters:\n");
sb.append(" - name: global-customer-id\n");
sb.append(" business:\n");
sb.append(" type: object\n");
sb.append(" $ref: \"#/definitions/business\"\n");
- sb.append(" nodes:\n");
- sb.append(" properties:\n");
- sb.append(" inventory-item-data:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/definitions/inventory-item-data\"\n");
+ sb.append(" nodes:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" properties:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" inventory-item-data:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" type: array" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" items:" + OxmFileProcessor.LINE_SEPARATOR);
+ sb.append(" $ref: \"#/definitions/inventory-item-data\"" + OxmFileProcessor.LINE_SEPARATOR);
sb.append(" service-subscription:\n");
sb.append(" description: |\n");
sb.append(" Object that group service instances.\n");
sb.append(" $ref: \"#/definitions/service-subscription\"\n");
return sb.toString();
}
- public String YAMLpatchDefs() {
+ public String YAMLdefsAddPatch() {
StringBuilder sb = new StringBuilder(8092);
- sb.append("patchDefinitions:\n");
- sb.append(" business:\n");
- sb.append(" description: |\n");
- sb.append(" Namespace for business related constructs\n");
- sb.append(" properties:\n");
- sb.append(" customers:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/patchDefinitions/customer\"\n");
- sb.append(" customer:\n");
+ sb.append(" zzzz-patch-customer:\n");
sb.append(" description: |\n");
sb.append(" customer identifiers to provide linkage back to BSS information.\n");
sb.append(" ###### Related Nodes\n");
sb.append(" - FROM service-subscription (CHILD of customer, service-subscription BelongsTo customer, MANY2ONE)(1)\n");
sb.append("\n");
sb.append(" -(1) IF this CUSTOMER node is deleted, this FROM node is DELETED also\n");
- sb.append(" required:\n");
- sb.append(" - global-customer-id\n");
- sb.append(" - subscriber-name\n");
- sb.append(" - subscriber-type\n");
sb.append(" properties:\n");
sb.append(" global-customer-id:\n");
sb.append(" type: string\n");
sb.append(" subscriber-type:\n");
sb.append(" type: string\n");
sb.append(" description: Subscriber type, a way to provide VID with only the INFRA customers.\n");
- sb.append(" customers:\n");
- sb.append(" description: |\n");
- sb.append(" Collection of customer identifiers to provide linkage back to BSS information.\n");
- sb.append(" properties:\n");
- sb.append(" customer:\n");
- sb.append(" type: array\n");
- sb.append(" items: \n");
- sb.append(" $ref: \"#/patchDefinitions/customer\"\n");
- sb.append(" inventory:\n");
- sb.append(" properties:\n");
- sb.append(" business:\n");
- sb.append(" type: object\n");
- sb.append(" $ref: \"#/patchDefinitions/business\"\n");
- sb.append(" nodes:\n");
- sb.append(" properties:\n");
- sb.append(" inventory-item-data:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/patchDefinitions/inventory-item-data\"\n");
- sb.append(" service-subscription:\n");
+ sb.append(" zzzz-patch-service-subscription:\n");
sb.append(" description: |\n");
sb.append(" Object that group service instances.\n");
sb.append(" ###### Related Nodes\n");
sb.append("\n");
sb.append(" -(1) IF this SERVICE-SUBSCRIPTION node is deleted, this FROM node is DELETED also\n");
sb.append(" -(4) IF this TO node is deleted, this SERVICE-SUBSCRIPTION is DELETED also\n");
- sb.append(" required:\n");
- sb.append(" - service-type\n");
sb.append(" properties:\n");
sb.append(" service-type:\n");
sb.append(" type: string\n");
sb.append(" temp-ub-sub-account-id:\n");
sb.append(" type: string\n");
sb.append(" description: This property will be deleted from A&AI in the near future. Only stop gap solution.\n");
- sb.append(" service-subscriptions:\n");
- sb.append(" description: |\n");
- sb.append(" Collection of objects that group service instances.\n");
- sb.append(" properties:\n");
- sb.append(" service-subscription:\n");
- sb.append(" type: array\n");
- sb.append(" items: \n");
- sb.append(" $ref: \"#/patchDefinitions/service-subscription\"\n");
return sb.toString();
}
- public String YAMLgetDefs() {
+
+ public String YAMLRelationshipList() {
StringBuilder sb = new StringBuilder(8092);
- sb.append("getDefinitions:\n");
- sb.append(" business:\n");
- sb.append(" description: |\n");
- sb.append(" Namespace for business related constructs\n");
+ sb.append(" relationship-list:\n");
sb.append(" properties:\n");
- sb.append(" customers:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/getDefinitions/customer\"\n");
- sb.append(" customer:\n");
- sb.append(" description: |\n");
- sb.append(" customer identifiers to provide linkage back to BSS information.\n");
- sb.append(" ###### Related Nodes\n");
- sb.append(" - FROM service-subscription (CHILD of customer, service-subscription BelongsTo customer, MANY2ONE)(1)\n");
- sb.append("\n");
- sb.append(" -(1) IF this CUSTOMER node is deleted, this FROM node is DELETED also\n");
- sb.append(" required:\n");
- sb.append(" - global-customer-id\n");
- sb.append(" - subscriber-name\n");
- sb.append(" - subscriber-type\n");
- sb.append(" properties:\n");
- sb.append(" global-customer-id:\n");
- sb.append(" type: string\n");
- sb.append(" description: Global customer id used across to uniquely identify customer.\n");
- sb.append(" subscriber-name:\n");
- sb.append(" type: string\n");
- sb.append(" description: Subscriber name, an alternate way to retrieve a customer.\n");
- sb.append(" subscriber-type:\n");
- sb.append(" type: string\n");
- sb.append(" description: Subscriber type, a way to provide VID with only the INFRA customers.\n");
- sb.append(" resource-version:\n");
- sb.append(" type: string\n");
- sb.append(" description: Used for optimistic concurrency. Must be empty on create, valid on update and delete.\n");
- sb.append(" service-subscriptions:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/getDefinitions/service-subscription\"\n");
- sb.append(" customers:\n");
- sb.append(" description: |\n");
- sb.append(" Collection of customer identifiers to provide linkage back to BSS information.\n");
- sb.append(" properties:\n");
- sb.append(" customer:\n");
- sb.append(" type: array\n");
- sb.append(" items: \n");
- sb.append(" $ref: \"#/getDefinitions/customer\"\n");
- sb.append(" inventory:\n");
- sb.append(" properties:\n");
- sb.append(" business:\n");
+ sb.append(" relationship:\n");
sb.append(" type: object\n");
- sb.append(" $ref: \"#/getDefinitions/business\"\n");
- sb.append(" nodes:\n");
- sb.append(" properties:\n");
- sb.append(" inventory-item-data:\n");
- sb.append(" type: array\n");
- sb.append(" items:\n");
- sb.append(" $ref: \"#/getDefinitions/inventory-item-data\"\n");
- sb.append(" service-subscription:\n");
- sb.append(" description: |\n");
- sb.append(" Object that group service instances.\n");
- sb.append(" ###### Related Nodes\n");
- sb.append(" - TO customer (PARENT of service-subscription, service-subscription BelongsTo customer, MANY2ONE)(4)\n");
- sb.append(" - TO tenant( service-subscription Uses tenant, MANY2MANY)\n");
- sb.append(" - FROM service-instance (CHILD of service-subscription, service-instance BelongsTo service-subscription, MANY2ONE)(1)\n");
- sb.append("\n");
- sb.append(" -(1) IF this SERVICE-SUBSCRIPTION node is deleted, this FROM node is DELETED also\n");
- sb.append(" -(4) IF this TO node is deleted, this SERVICE-SUBSCRIPTION is DELETED also\n");
- sb.append(" required:\n");
- sb.append(" - service-type\n");
- sb.append(" properties:\n");
- sb.append(" service-type:\n");
- sb.append(" type: string\n");
- sb.append(" description: Value defined by orchestration to identify this service.\n");
- sb.append(" temp-ub-sub-account-id:\n");
- sb.append(" type: string\n");
- sb.append(" description: This property will be deleted from A&AI in the near future. Only stop gap solution.\n");
- sb.append(" resource-version:\n");
- sb.append(" type: string\n");
- sb.append(" description: Used for optimistic concurrency. Must be empty on create, valid on update and delete.\n");
- sb.append(" service-subscriptions:\n");
- sb.append(" description: |\n");
- sb.append(" Collection of objects that group service instances.\n");
- sb.append(" properties:\n");
- sb.append(" service-subscription:\n");
- sb.append(" type: array\n");
- sb.append(" items: \n");
- sb.append(" $ref: \"#/getDefinitions/service-subscription\"\n");
+ sb.append(" $ref: \"#/definitions/relationship\"\n");
return sb.toString();
}
+
public static String EdgeDefs() {
StringBuilder sb = new StringBuilder(8092);
sb.append("{\n" +
"}\n");
return sb.toString();
}
-}
-
+}
\ No newline at end of file