private void recordStage(Report.Stage reportStage, org.radargun.Stage stage, StageDescription description) { // expand complex definitions Queue<Map.Entry<String, Definition>> queue = new LinkedList<>(description.properties.entrySet()); HashMap<String, Definition> expanded = new HashMap<>(); Map.Entry<String, Definition> entry; while ((entry = queue.poll()) != null) { if (entry.getValue() instanceof SimpleDefinition) { expanded.put(entry.getKey(), entry.getValue()); } else if (entry.getValue() instanceof ComplexDefinition) { for (ComplexDefinition.Entry subentry : ((ComplexDefinition) entry.getValue()).getAttributes()) { queue.add(new MapEntry<>(entry.getKey() + "-" + subentry.name, subentry.definition)); } expanded.put(entry.getKey(), entry.getValue()); } else throw new IllegalArgumentException("Unknown definition type: " + entry.getValue()); } for (Map.Entry<String, Path> property : PropertyHelper.getProperties(description.stageClass, true, false, false).entrySet()) { String propertyName = property.getKey(); Path path = property.getValue(); Definition definition = expanded.get(propertyName); reportStage.addProperty(propertyName, definition, PropertyHelper.getPropertyString(path, stage)); } }
properties.add(new MapEntry<>(name, newPath)); if (includeAliases) { String deprecatedName = property.deprecatedName(); deprecatedName = XmlHelper.camelCaseToDash(deprecatedName); properties.add(new MapEntry<>(deprecatedName, newPath)); if (Character.isLetterOrDigit(delegatePrefix.charAt(i - 1))) break; properties.add(new MapEntry<>(delegatePrefix.substring(0, i), newPath));