private String replacePathSplitter(String path) { String[] ps = path.replaceFirst("/", "").split("/", 0); List<String> rs = new ArrayList<String>(); for (String p : ps) { if (p.indexOf("{") < 0) { rs.add("\"" + p + "\""); } else { rs.add(p); } } return joinStrings(" :> ", rs); }
private static CodegenModel reconcileInlineEnums( CodegenModel codegenModel, CodegenModel parentCodegenModel) { // This generator uses inline classes to define enums, which breaks when // dealing with models that have subTypes. To clean this up, we will analyze // the parent and child models, look for enums that match, and remove // them from the child models and leave them in the parent. // Because the child models extend the parents, the enums will be available via the parent. // Only bother with reconciliation if the parent model has enums. if (parentCodegenModel.hasEnums) { // Get the properties for the parent and child models final List<CodegenProperty> parentModelCodegenProperties = parentCodegenModel.vars; List<CodegenProperty> codegenProperties = codegenModel.vars; // Iterate over all of the parent model properties boolean removedChildEnum = false; for (CodegenProperty parentModelCodegenPropery : parentModelCodegenProperties) { // Look for enums if (parentModelCodegenPropery.isEnum) { // Now that we have found an enum in the parent class, // and search the child class for the same enum. Iterator<CodegenProperty> iterator = codegenProperties.iterator(); while (iterator.hasNext()) { CodegenProperty codegenProperty = iterator.next(); if (codegenProperty.isEnum && codegenProperty.equals(parentModelCodegenPropery)) { // We found an enum in the child class that is // a duplicate of the one in the parent, so remove it. iterator.remove(); removedChildEnum = true; } } } } if (removedChildEnum) { // If we removed an entry from this model's vars, we need to ensure hasMore is updated int count = 0, numVars = codegenProperties.size(); for (CodegenProperty codegenProperty : codegenProperties) { count += 1; codegenProperty.hasMore = (count < numVars) ? true : null; } codegenModel.vars = codegenProperties; } } return codegenModel; }
private String formPath(String path, List<CodegenParameter> formParams) { String names = "Form"; for (CodegenParameter p : formParams) { if (p.dataType.equals("FilePath")) { // file data processing } names += p.baseName; } if (formParams.size() > 0) { path += " :> ReqBody '[FormUrlEncoded] " + names; } return path; }
private String findCommonPrefixOfVars(List<String> vars) { String prefix = StringUtils.getCommonPrefix(vars.toArray(new String[vars.size()])); // exclude trailing characters that should be part of a valid variable // e.g. ["status-on", "status-off"] => "status-" (not "status-o") return prefix.replaceAll("[a-zA-Z0-9]+\\z", ""); }