public XSDSchemaRepository(SchemaRepository schemaRepository, XmlSchema... schemas) { this(schemaRepository); addSchema(Lists.asList(schemas)); } public XSDSchemaRepository(SchemaRepository schemaRepository, Collection<XmlSchema> schemas) {
public static String join(Iterable<String> strings, String separator) { return join(strings, separator, false); } public static String join(Iterable<String> strings, String separator, boolean removeNulls) {
private void sortExternalDependencies(NodeBuilder oldFileXml) { oldFileXml. search(true, n -> "NameValuePair".equals(n.getName()) && "EXTERNAL_RESOURCE_DEPENDENCY".equals(n.searchFirstByName("name").getTextContent())). forEach(n ->{ NodeBuilder value = n.searchFirstByName("value"); String dependencies = value.getTextContent(); if (dependencies != null) { String[] deps = dependencies.split(","); List<String> depsList = new ArrayList<>(Lists.asList(deps)); depsList.sort(String.CASE_INSENSITIVE_ORDER); String d = Lists.join(depsList, ","); value.setTextContent(d); } }); } private NodeBuilder clearNotImportantValues(NodeBuilder xml) {
private XSDSchemaRepository(SchemaRepository schemaRepository) { super(schemaRepository, Lists.asList(XsdBuiltInTypes.getBuiltInTypes())); } public XSDSchemaRepository(SchemaRepository schemaRepository, XmlSchema... schemas) {
public static String concat(List<String> strings) { return Lists.join(strings, ","); } }
private void loadAllGlobalVariables() { GlobalVariables vars = getRootGlobalVariables(); List<GlobalVariables> allVars = Lists.asList(); Queue<GlobalVariables> toProcess = new LinkedList<>(); toProcess.add(vars); while (!toProcess.isEmpty()) { vars = toProcess.poll(); allVars.add(vars); toProcess.addAll(vars.getChildVariables()); } allVars.stream().parallel().forEach(p -> p.getAllVariables()); }
public static String concat(String... strings) { return Lists.join(strings, ","); }
public Optional<NodeBuilder> getServiceSDKVariablesElement(Environment env, Archive archive, Service service) { Optional<NodeBuilder> serviceConfig = getServiceConfig(env, archive, service); List<String> names = Lists.asList(SDK_VARIABLES); return !serviceConfig.isPresent() ? Optional.empty() : serviceConfig.get().search("NVPairs").filter(n -> names.contains(n.getAttribute("name"))).findAny(); } public NodeBuilder createServiceSDKVariablesElement(Environment env, Archive archive, Service service) {
public static String join(Iterable<String> strings, String separator, boolean removeNulls) { return join(StreamSupport.stream(strings.spliterator(), false).filter(s -> !removeNulls || s != null).toArray(), separator); } public static String join(Object[] strings, String separator) {
public Optional<NodeBuilder> getServiceVariablesElement(Environment env, Archive archive, Service service) { Optional<NodeBuilder> serviceConfig = getServiceConfig(env, archive, service); List<String> names = Lists.asList(RUNTIME_VARIABLES); return !serviceConfig.isPresent() ? Optional.empty() : serviceConfig.get().search("NVPairs").filter(n -> names.contains(n.getAttribute("name"))).findAny(); } public Optional<NodeBuilder> getServiceSDKVariablesElement(Environment env, Archive archive, Service service) {
private NodeBuilder normalizeAdbAdapterXML(NodeBuilder oldFileXml) { //oldFileXml.search(true, n -> true).forEach(n -> n.sortChildren((a,b) -> a.getName().compareTo(b.getName()))); oldFileXml.search(true, "operations").filter(n -> n.getChildren().size() == 0).collect(Collectors.toList()).forEach(n -> n.getParent().removeChild(n));; oldFileXml.search(true, "properties").filter(n -> n.getTextContent() != null).forEach(n -> n.setTextContent(Lists.asList(n.getTextContent().split(",")).stream().sorted().collect(Collectors.joining(",")))); return oldFileXml; } private NodeBuilder normalizeTiborAdapterXML(NodeBuilder oldFileXml) {
private NodeBuilder normalizeTiborAdapterXML(NodeBuilder oldFileXml) { oldFileXml.search(true, n -> true).forEach(n -> n.sortChildren((a,b) -> a.getName().compareTo(b.getName()))); oldFileXml.search(true, "properties").filter(n -> n.getTextContent() != null).forEach(n -> n.setTextContent(Lists.asList(n.getTextContent().split(",")).stream().sorted().collect(Collectors.joining(",")))); return oldFileXml; } private NodeBuilder normalizeTibcoXML(NodeBuilder oldFileXml) {
public List<Service> getServices(Environment env, Archive archive) { NodeBuilder configElement = getConfig(env, archive); if (configElement == null) return Lists.asList(); return configElement.search("services"). map(n -> n.getChildren().stream()).flatMap(n -> n).map(n -> new Service(n.getAttribute("name"), ServiceType.fromElementName(n.getName()))).collect(Collectors.toList()); }
public void removeSettableVariables(NodeBuilder oldFileXml) { oldFileXml. search("NameValuePairs"). filter(n -> n.hasChild(c -> "name".equals(c.getName()) && Lists.asList("Global Variables", "Runtime Variables").contains(c.getTextContent()))). map(s -> s.search("NameValuePair").filter(n -> n.hasChild(c -> "requiresConfiguration".equals(c.getName()) && "true".equals(c.getTextContent())))).flatMap(n -> n). collect(Collectors.toList()). forEach(n -> n.getParent().removeChild(n)); } public void removeSDKVariables(NodeBuilder oldFileXml) {
public List<CompareResult> compareUpdates(Path config1, Path config2, String env) { NodeBuilder nvPairs1 = loadAndSortUpdateConfig(config1, env); NodeBuilder nvPairs2 = loadAndSortUpdateConfig(config2, env); if (nvPairs1.equalsTo(nvPairs2)) { return Lists.asList(new CompareResult(config1, CompareResultStatus.Equals, config1 + " = " + config1)); } else { return Lists.asList(new CompareResult(config1, CompareResultStatus.DifferentContent, config1 + " != " + config2)); } } public List<CompareResult> compareFullConfig(Path config1, Path config2) {
public NodeBuilder createServiceSDKVariablesElement(Environment env, Archive archive, Service service) { Optional<NodeBuilder> serviceSDKVariablesElement = getServiceSDKVariablesElement(env, archive, service); if (!serviceSDKVariablesElement.isPresent()) { Optional<NodeBuilder> serviceConfig = getServiceConfig(env, archive, service); List<String> names = Lists.asList(SDK_VARIABLES); int childIndex = serviceConfig.get().searchFirstByName("failureCount").getChildIndex(); serviceSDKVariablesElement = Optional.of(serviceConfig.get().addChild("NVPairs", childIndex).addAttribute("name", SDK_VARIABLES)); } return serviceSDKVariablesElement.get(); } public Optional<NodeBuilder> getServiceVariableElement(Environment env, Archive archive, Service service, GlobalVariable value) {
public XSDSchemaRepository(Collection<XmlSchema> schemas) { addSchema(Lists.asList(XsdBuiltInTypes.getBuiltInTypes())); addSchema(schemas); } public XmlNode<?> findReference(ReferenceInfo ref) {
public List<CompareResult> compareFullConfig(Path config1, Path config2) { NodeBuilder n1 = loadFullConfig(config1); NodeBuilder n2 = loadFullConfig(config2); if (n1.equalsTo(n2)) { return Lists.asList(new CompareResult(config1, CompareResultStatus.Equals, config1 + " = " + config1)); } else { return Lists.asList(new CompareResult(config1, CompareResultStatus.DifferentContent, config1 + " != " + config2 + " " + n2.getFirstDiff(n1))); } } private NodeBuilder loadFullConfig(Path config1) {
private static void checkVariables(NodeBuilder fullConfig, GlobalVariables rootGlobalVariables, Repository repo, String env, String archiveName, List<String> messages) { rootGlobalVariables.getAllVariables().entrySet().stream().filter(v -> v.getValue().size() > 0) .filter(v -> v.getValue().get(0).isDeploymentSettable()).forEach(e -> { String key = parseKey(rootGlobalVariables, e.getKey()); /*boolean hasVariable = */ Optional<NodeBuilder> xmlVariable = fullConfig .searchFirst(true, c -> "NVPairs".equals(c.getName()) && "Global Variables".equals(c.getAttribute("name"))) .search(true, "name").filter(name -> key.equals(name.getTextContent())).findFirst(); if (!xmlVariable.isPresent() && !Lists.asList("Deployment", "Domain").contains(key)) messages.add(repo.getDeployment().getName() + "\t" + archiveName + "\t" + env + "\t" + "missing global variable in fullconfig" + "\t" + key); if (xmlVariable.isPresent()) { GlobalVariable childVariable = getChildVariable(rootGlobalVariables, e.getKey()); String name = xmlVariable.get().getParent().getName(); String xmlVariableType = name.replace("NameValuePair", ""); if ("".equals(xmlVariableType)) { xmlVariableType = "String"; } if (!xmlVariableType.equals(childVariable.getType())) { messages.add(repo.getDeployment().getName() + "\t" + archiveName + "\t" + env + "\t" + "variable has wrong type (fullconfig contains " +xmlVariableType + " but " + childVariable.getType() + " is defined in deployment)"+ "\t" + key); } } }); rootGlobalVariables.getChildVariables().forEach(c -> checkVariables(fullConfig, c, repo, env, archiveName, messages)); } private static void checkServiceVariables(NodeBuilder fullConfig, Optional<NodeBuilder> fullConfigExport, GlobalVariables rootGlobalVariables, Repository repo, String env, String archiveName, List<String> messages) {