From 0cfe6edb0ac361998bc567067b4c7ce780b835fa Mon Sep 17 00:00:00 2001 From: Bharat saraswal Date: Fri, 22 Sep 2017 16:00:17 +0530 Subject: Resolved below sonar issues: reduced method complexitity. removed redundant code. Issue-Id:AAI-211 Change-Id: If4f8f53cc01fdfb6cc9d0efea5e144fef9941720 Signed-off-by: Bharat saraswal --- .../aai/workarounds/LegacyURLTransformer.java | 122 ++++---- .../aai/workarounds/ModifyOXMProperties.java | 338 ++++++++++----------- 2 files changed, 227 insertions(+), 233 deletions(-) diff --git a/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/LegacyURLTransformer.java b/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/LegacyURLTransformer.java index 2775af0..0060d70 100644 --- a/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/LegacyURLTransformer.java +++ b/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/LegacyURLTransformer.java @@ -21,76 +21,70 @@ package org.openecomp.aai.workarounds; import java.net.MalformedURLException; -import java.net.URI; import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; -import com.att.aft.dme2.internal.javaxwsrs.core.UriBuilder; - public class LegacyURLTransformer { - /** - * Instantiates a new legacy URL transformer. - */ - private LegacyURLTransformer() { - - } - - private static class Helper { - private static final LegacyURLTransformer INSTANCE = new LegacyURLTransformer(); - } - - /** - * Gets the single instance of LegacyURLTransformer. - * - * @return single instance of LegacyURLTransformer - */ - public static LegacyURLTransformer getInstance() { - return Helper.INSTANCE; - } - - /** - * Gets the legacy URL. - * - * @param url the url - * @return the legacy URL - * @throws MalformedURLException the malformed URL exception - */ - public URL getLegacyURL(URL url) throws MalformedURLException { - String substring = "/aai/(?v\\d+)/cloud-infrastructure/tenants/tenant/(?.*?)/vservers/vserver/(?[^/]*?$)"; - String replacement = "/aai/servers/${version}/${tenantKey}/vservers/${vserverKey}"; - Pattern p = Pattern.compile(substring); - String result = url.toString(); - Matcher m = p.matcher(result); - if (m.find()) { - result = m.replaceFirst(replacement); + /** + * Instantiates a new legacy URL transformer. + */ + private LegacyURLTransformer() { + + } + + private static class Helper { + + private static final LegacyURLTransformer INSTANCE = new LegacyURLTransformer(); + } + + /** + * Gets the single instance of LegacyURLTransformer. + * + * @return single instance of LegacyURLTransformer + */ + public static LegacyURLTransformer getInstance() { + return Helper.INSTANCE; + } + + /** + * Gets the legacy URL. + * + * @param url the url + * @return the legacy URL + * @throws MalformedURLException the malformed URL exception + */ + public URL getLegacyURL(URL url) throws MalformedURLException { + String substring = "/aai/(?v\\d+)/cloud-infrastructure/tenants/tenant/(?.*?)/vservers/" + + "vserver/(?[^/]*?$)"; + String replacement = "/aai/servers/${version}/${tenantKey}/vservers/${vserverKey}"; + Pattern p = Pattern.compile(substring); + String result = url.toString(); + Matcher m = p.matcher(result); + if (m.find()) { + result = m.replaceFirst(replacement); + } + return new URL(result); + } - } - URL resultUrl = new URL(result); - return resultUrl; - - } - - /** - * Gets the current URL. - * - * @param url the url - * @return the current URL - * @throws MalformedURLException the malformed URL exception - */ - public URL getCurrentURL(URL url) throws MalformedURLException { - String substring = "/aai/servers/(?v[23])/(?.*?)/vservers/(?[^/]*?$)"; - String replacement = "/aai/${version}/cloud-infrastructure/tenants/tenant/${tenantKey}/vservers/vserver/${vserverKey}"; - Pattern p = Pattern.compile(substring); - String result = url.toString(); - Matcher m = p.matcher(result); - if (m.find()) { - result = m.replaceFirst(replacement); + /** + * Gets the current URL. + * + * @param url the url + * @return the current URL + * @throws MalformedURLException the malformed URL exception + */ + public URL getCurrentURL(URL url) throws MalformedURLException { + String substring = "/aai/servers/(?v[23])/(?.*?)/vservers/(?[^/]*?$)"; + String replacement = "/aai/${version}/cloud-infrastructure/tenants/tenant/${tenantKey}/vservers/vserver/${vserverKey}"; + Pattern p = Pattern.compile(substring); + String result = url.toString(); + Matcher m = p.matcher(result); + if (m.find()) { + result = m.replaceFirst(replacement); + } - } - - URL resultUrl = new URL(result); - return resultUrl; - } + return new URL(result); + } } diff --git a/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/ModifyOXMProperties.java b/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/ModifyOXMProperties.java index 4f42afb..494ada3 100644 --- a/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/ModifyOXMProperties.java +++ b/ajsc-aai/src/main/java/org/openecomp/aai/workarounds/ModifyOXMProperties.java @@ -20,13 +20,13 @@ package org.openecomp.aai.workarounds; +import com.google.common.base.CaseFormat; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.xml.XMLConstants; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -41,180 +41,180 @@ import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; - import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import com.google.common.base.CaseFormat; - public class ModifyOXMProperties { - private static String[] versions = new String[]{"v8"}; - - /** - * The main method. - * - * @param args the arguments - * @throws SAXException the SAX exception - * @throws IOException Signals that an I/O exception has occurred. - * @throws ParserConfigurationException the parser configuration exception - * @throws XPathExpressionException the x path expression exception - * @throws TransformerException the transformer exception - */ - public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException, TransformerException { - - for (int i = 0; i < versions.length; i++) { - process(versions[i]); - } - - - - } - - /** - * Process. - * - * @param version the version - * @throws SAXException the SAX exception - * @throws IOException Signals that an I/O exception has occurred. - * @throws ParserConfigurationException the parser configuration exception - * @throws XPathExpressionException the x path expression exception - * @throws TransformerException the transformer exception - */ - private static void process(String version) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException, TransformerException { - - - - String filepath = "bundleconfig-local/etc/oxm/aai_oxm_" + version + ".xml"; - DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); - docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); - Document doc = docBuilder.parse(filepath); - XPath xpath = XPathFactory.newInstance().newXPath(); - NodeList list = doc.getElementsByTagName("java-type"); - //Find namespaces - restrict to inventory - //XPathExpression expr = xpath.compile("//java-type[java-attributes[count(xml-element[contains(@type, 'aai.openecomp.org')])=count(./xml-element)][count(xml-element) > 1]]/xml-root-element"); - XPathExpression expr = xpath.compile("//java-type[@name='Inventory']/java-attributes/xml-element/@name"); - Object result = expr.evaluate(doc, XPathConstants.NODESET); - NodeList nodes = (NodeList) result; - String[] temp = null; - List itemsUnderInventory = new ArrayList<>(); - for (int i = 0; i < nodes.getLength(); i++) { - itemsUnderInventory.add(nodes.item(i).getTextContent()); - } - Map namespaces = new HashMap<>(); - - itemsUnderInventory.remove("Search"); - for (String item : itemsUnderInventory) { - expr = xpath.compile("//java-type[xml-root-element/@name='" + item + "']"); - result = expr.evaluate(doc, XPathConstants.NODESET); - nodes = (NodeList) result; - for (int i = 0; i < nodes.getLength(); i++) { - String a = "java-attributes/xml-element/@type[contains(.,'aai.openecomp.org')]"; - XPathExpression expr2 = xpath.compile(a); - Object result2 = expr2.evaluate(nodes.item(i), XPathConstants.NODESET); - - NodeList node2 = (NodeList) result2; - for (int j = 0; j < node2.getLength(); j++) { - temp = node2.item(j).getTextContent().split("\\."); - namespaces.put(temp[temp.length-1], item); - } - } - } - - - - //go through plurals - expr = xpath.compile("//java-type[java-attributes[count(xml-element) = 1]/xml-element[contains(@type, 'aai.openecomp.org')]]/xml-root-element"); - - result = expr.evaluate(doc, XPathConstants.NODESET); - nodes = (NodeList) result; - List children = new ArrayList<>(); - for (int i = 0; i < nodes.getLength(); i++) { - XPathExpression expr2 = xpath.compile("../java-attributes/xml-element[1]/@type[contains(.,'aai.openecomp.org')]"); - Object result2 = expr2.evaluate(nodes.item(i), XPathConstants.NODESET); - - NodeList node2 = (NodeList) result2; - temp = node2.item(0).getTextContent().split("\\."); - String containerName = nodes.item(i).getAttributes().getNamedItem("name").getTextContent(); - String childrenTuple = containerName + "," + temp[temp.length-1]; - if (namespaces.containsKey(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL,containerName))) { - childrenTuple += "," + namespaces.get(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL,containerName)); - } - children.add(childrenTuple); - } - - //match types up with plurals - String[] split = null; - for (String s : children) { - split = s.split(","); - expr = xpath.compile("//java-type[@name='"+split[1]+"']/xml-properties"); - result = expr.evaluate(doc, XPathConstants.NODESET); - nodes = (NodeList) result; - if (nodes.getLength() > 0) { - Element property = null; - - if (!hasChild(nodes.item(0), "name", "container")) { - - property = doc.createElement("xml-property"); - - property.setAttribute("name", "container"); - property.setAttribute("value",split[0]); - nodes.item(0).appendChild(property); - - } - - if (split.length == 3) { - Element property2 = null; - if (!hasChild(nodes.item(0), "name", "namespace")) { - property2 = doc.createElement("xml-property"); - property2.setAttribute("name", "namespace"); - property2.setAttribute("value",split[2]); - nodes.item(0).appendChild(property2); - } - - } - } - - - } - - filepath = "bundleconfig-local/etc/oxm/aai_oxm_" + version + ".xml"; - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - Transformer transformer = transformerFactory.newTransformer(); - DOMSource source = new DOMSource(doc); - StreamResult file = new StreamResult(new File(filepath)); - transformer.transform(source, file); - } - - /** - * Checks for child. - * - * @param node the node - * @param name the name - * @param value the value - * @return true, if successful - */ - private static boolean hasChild(Node node, String name, String value) { - boolean result = false; - NodeList list = node.getChildNodes(); - Node temp = null; - for (int i = 0; i < list.getLength(); i++) { - - if (list.item(i).hasAttributes()) { - temp = list.item(i).getAttributes().getNamedItem(name); - } - - if (temp != null && temp.getTextContent().equals(value)) { - result = true; - } - } - - return result; - } - + private static String[] versions = new String[]{"v8"}; + + /** + * The main method. + * + * @param args the arguments + * @throws SAXException the SAX exception + * @throws IOException Signals that an I/O exception has occurred. + * @throws ParserConfigurationException the parser configuration exception + * @throws XPathExpressionException the x path expression exception + * @throws TransformerException the transformer exception + */ + public static void main(String[] args) + throws SAXException, IOException, ParserConfigurationException, XPathExpressionException, TransformerException { + + for (String version : versions) { + process(version); + } + } + + /** + * Process. + * + * @param version the version + * @throws SAXException the SAX exception + * @throws IOException Signals that an I/O exception has occurred. + * @throws ParserConfigurationException the parser configuration exception + * @throws XPathExpressionException the x path expression exception + * @throws TransformerException the transformer exception + */ + private static void process(String version) + throws SAXException, IOException, ParserConfigurationException, XPathExpressionException, TransformerException { + + String filepath = "bundleconfig-local/etc/oxm/aai_oxm_" + version + ".xml"; + DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); + docFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); + Document doc = docBuilder.parse(filepath); + XPath xpath = XPathFactory.newInstance().newXPath(); + //Find namespaces - restrict to inventory + //XPathExpression expr = xpath.compile("//java-type[java-attributes[count(xml-element[contains(@type, 'aai.openecomp.org')])=count(./xml-element)][count(xml-element) > 1]]/xml-root-element"); + XPathExpression expr = xpath.compile("//java-type[@name='Inventory']/java-attributes/xml-element/@name"); + Object result = expr.evaluate(doc, XPathConstants.NODESET); + NodeList nodes = (NodeList) result; + List itemsUnderInventory = new ArrayList<>(); + for (int i = 0; i < nodes.getLength(); i++) { + itemsUnderInventory.add(nodes.item(i).getTextContent()); + } + Map namespaces = new HashMap<>(); + + itemsUnderInventory.remove("Search"); + for (String item : itemsUnderInventory) { + expr = xpath.compile("//java-type[xml-root-element/@name='" + item + "']"); + result = expr.evaluate(doc, XPathConstants.NODESET); + nodes = (NodeList) result; + handleItemsUnderInventory(nodes, namespaces, xpath, item); + } + + //go through plurals + expr = xpath.compile( + "//java-type[java-attributes[count(xml-element) = 1]/xml-element[contains(@type, 'aai.openecomp.org')]]/xml-root-element"); + + result = expr.evaluate(doc, XPathConstants.NODESET); + nodes = (NodeList) result; + List children = new ArrayList<>(); + for (int i = 0; i < nodes.getLength(); i++) { + XPathExpression expr2 = xpath + .compile("../java-attributes/xml-element[1]/@type[contains(.,'aai.openecomp.org')]"); + Object result2 = expr2.evaluate(nodes.item(i), XPathConstants.NODESET); + + NodeList node2 = (NodeList) result2; + String[] temp = node2.item(0).getTextContent().split("\\."); + String containerName = nodes.item(i).getAttributes().getNamedItem("name").getTextContent(); + String childrenTuple = containerName + "," + temp[temp.length - 1]; + if (namespaces.containsKey(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, containerName))) { + childrenTuple += + "," + namespaces.get(CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, containerName)); + } + children.add(childrenTuple); + } + + //match types up with plurals + handleChildrenNodes(children, xpath, doc); + + filepath = "bundleconfig-local/etc/oxm/aai_oxm_" + version + ".xml"; + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + Transformer transformer = transformerFactory.newTransformer(); + DOMSource source = new DOMSource(doc); + StreamResult file = new StreamResult(new File(filepath)); + transformer.transform(source, file); + } + + private static void handleItemsUnderInventory(NodeList nodes, Map namespaces, XPath xpath, + String item) throws XPathExpressionException { + String[] temp; + for (int i = 0; i < nodes.getLength(); i++) { + String a = "java-attributes/xml-element/@type[contains(.,'aai.openecomp.org')]"; + XPathExpression expr2 = xpath.compile(a); + Object result2 = expr2.evaluate(nodes.item(i), XPathConstants.NODESET); + + NodeList node2 = (NodeList) result2; + for (int j = 0; j < node2.getLength(); j++) { + temp = node2.item(j).getTextContent().split("\\."); + namespaces.put(temp[temp.length - 1], item); + } + } + } + + private static void handleChildrenNodes(List children, XPath xpath, Document doc) + throws XPathExpressionException { + NodeList nodes; + XPathExpression expr; + Object result; + String[] split; + for (String s : children) { + split = s.split(","); + expr = xpath.compile("//java-type[@name='" + split[1] + "']/xml-properties"); + result = expr.evaluate(doc, XPathConstants.NODESET); + nodes = (NodeList) result; + if (nodes.getLength() > 0) { + + if (!hasChild(nodes.item(0), "name", "container")) { + + Element property = doc.createElement("xml-property"); + property.setAttribute("name", "container"); + property.setAttribute("value", split[0]); + nodes.item(0).appendChild(property); + } + + if (split.length == 3) { + Element property; + if (!hasChild(nodes.item(0), "name", "namespace")) { + property = doc.createElement("xml-property"); + property.setAttribute("name", "namespace"); + property.setAttribute("value", split[2]); + nodes.item(0).appendChild(property); + } + } + } + } + } + + /** + * Checks for child. + * + * @param node the node + * @param name the name + * @param value the value + * @return true, if successful + */ + private static boolean hasChild(Node node, String name, String value) { + boolean result = false; + NodeList list = node.getChildNodes(); + Node temp = null; + for (int i = 0; i < list.getLength(); i++) { + + if (list.item(i).hasAttributes()) { + temp = list.item(i).getAttributes().getNamedItem(name); + } + + if (temp != null && temp.getTextContent().equals(value)) { + result = true; + } + } + + return result; + } } -- cgit 1.2.3-korg