protected static AssemblerArgs createProcessArgs(String toolName) { ServiceLoader<DeBruijnArgs> dbgArgs = ServiceLoader.load(DeBruijnArgs.class); ServiceLoader<DeBruijnOptimiserArgs> dbgOptArgs = ServiceLoader.load(DeBruijnOptimiserArgs.class); ServiceLoader<DeBruijnAutoArgs> dbgAutoArgs = ServiceLoader.load(DeBruijnAutoArgs.class); List<AssemblerArgs> argClasses = new ArrayList<>(); for (DeBruijnArgs args : dbgArgs) { argClasses.add(args); } for (DeBruijnOptimiserArgs args : dbgOptArgs) { argClasses.add(args); } for (DeBruijnAutoArgs args : dbgAutoArgs) { argClasses.add(args); } for (AssemblerArgs args : argClasses) { if (args.getProcessName().equalsIgnoreCase(toolName)) { return args; } } return null; }
public static Assembler createGenericAssembler(String toolName, ConanExecutorService ces) { AssemblerArgs args = createProcessArgs(toolName); if (args == null) return null; ServiceLoader<Assembler> procLoader = ServiceLoader.load(Assembler.class); for (Assembler assembler : procLoader) { if (assembler.getName().equalsIgnoreCase(toolName.trim())) { assembler.initialise(args.toConanArgs(), ces); return assembler; } } return null; }