protected static void indexClass(Map<String, List<Class<?>>> definitions, Class<?> clazz) { NamespaceHelper.Coords coords = NamespaceHelper.suggestCoordinates(StageHelper.NAMESPACE_ROOT, clazz, "radargun-"); File[] codepaths = new File[] {new File(Utils.getCodePath(clazz))}; NamespaceHelper.registerNamespace(coords.namespace, codepaths, coords.jarMajorMinor); List<Class<?>> byNamespace = definitions.get(coords.namespace); if (byNamespace == null) { definitions.put(coords.namespace, byNamespace = new ArrayList<>()); } byNamespace.add(clazz); }
public static Coords suggestCoordinates(String namespaceRoot, Class<?> clazz, String omitPrefix) { File jar = new File(Utils.getCodePath(clazz)); String filename = jar.toPath().getFileName().toString(); Matcher matcher = Pattern.compile("(.*[0-9]+\\.[0-9]+)\\.[0-9]+.*").matcher(filename); if (!matcher.matches()) { throw new IllegalStateException("Filename does not match to the expected pattern: " + filename); } String jarMajorMinor = matcher.group(1); Namespace ns = clazz.getAnnotation(Namespace.class); if (ns != null) { return getCoords(namespaceRoot, ns, jarMajorMinor); } else { return new Coords(getNamespace(namespaceRoot, jarMajorMinor, omitPrefix), Namespace.NO_DEPRECATED_NAME, jarMajorMinor); } }
public static Coords getCoords(String namespaceRoot, Class<?> clazz, String omitPrefix) { String jarMajorMinor = codepathToToJarMajorMinor.get(new File(Utils.getCodePath(clazz))); Namespace ns = clazz.getAnnotation(Namespace.class); if (jarMajorMinor != null) { if (ns != null) { return getCoords(namespaceRoot, ns, jarMajorMinor); } else { return new Coords(getNamespace(namespaceRoot, jarMajorMinor, omitPrefix), Namespace.NO_DEPRECATED_NAME, jarMajorMinor); } } else { return null; } }
private static void addStage(String stageName, Class<? extends org.radargun.Stage> stageClazz) { NamespaceHelper.Coords coords = NamespaceHelper.suggestCoordinates(NAMESPACE_ROOT, stageClazz, "radargun-"); File[] codepaths = new File[] {new File(Utils.getCodePath(stageClazz))}; NamespaceHelper.registerNamespace(coords.namespace, codepaths, coords.jarMajorMinor); addStageToNamespace(coords.namespace, stageName, stageClazz); if (!coords.deprecatedNamespace.equals(Namespace.NO_DEPRECATED_NAME)) { NamespaceHelper.registerNamespace(coords.deprecatedNamespace, codepaths, coords.jarMajorMinor); addStageToNamespace(coords.deprecatedNamespace, stageName, stageClazz); } }
String source = Utils.getCodePath(clazz); if (source == null) source = "unknown source"; int lastSlash = source.lastIndexOf('/');