private ModuleItem<?> getSingleInput(final Module module, final Class<?> type) { if (moduleService == null || convertService == null) return null; // Check the actual class first ModuleItem<?> item = moduleService.getSingleInput(module, type); if (item == null || !item.isAutoFill()) { // No match, so check look for classes that can be converted from the specified type final Collection<Class<?>> compatibleClasses = convertService.getCompatibleOutputClasses(type); item = moduleService.getSingleInput(module, compatibleClasses); } if (item == null || !item.isAutoFill()) return null; return item; }
/** * Helper method to look up the name of singleton module inputs of a given * type. * * @param module Module to check for single input * @param type Type of single input to look for * @return If the given module has exactly one input of the specified type, * return that input's name. Otherwise null; */ protected String getSingleInput(final Module module, final Class<?> type) { if (moduleService == null) return null; final ModuleItem<?> item = moduleService.getSingleInput(module, type); if (item == null || !item.isAutoFill()) return null; return item.getName(); }
/** * Helper method to look up the name of singleton module inputs of a given * type. * * @param module Module to check for single input * @param type Type of single input to look for * @return If the given module has exactly one input of the specified type, * return that input's name. Otherwise null; */ protected String getSingleInput(final Module module, final Class<?> type) { if (moduleService == null) return null; final ModuleItem<?> item = moduleService.getSingleInput(module, type); if (item == null || !item.isAutoFill()) return null; return item.getName(); }
@Override public void process(final Module module) { if (logService == null || moduleService == null) return; final ModuleItem<?> loggerInput = moduleService.getSingleInput(module, Logger.class); if (loggerInput == null || !loggerInput.isAutoFill()) return; String loggerName = loggerInput.getLabel(); if(loggerName == null || loggerName.isEmpty()) loggerName = module.getDelegateObject().getClass().getSimpleName(); Logger logger = logService.subLogger(loggerName); final String name = loggerInput.getName(); module.setInput(name, logger); module.resolveInput(name); }
@Override public void process(final Module module) { if (logService == null || moduleService == null) return; final ModuleItem<?> loggerInput = moduleService.getSingleInput(module, Logger.class); if (loggerInput == null || !loggerInput.isAutoFill()) return; String loggerName = loggerInput.getLabel(); if(loggerName == null || loggerName.isEmpty()) loggerName = module.getDelegateObject().getClass().getSimpleName(); Logger logger = logService.subLogger(loggerName); final String name = loggerInput.getName(); module.setInput(name, logger); module.resolveInput(name); }
@Override public void process(final Module module) { if (displayService == null || moduleService == null) return; final ModuleItem<?> displayInput = moduleService.getSingleInput(module, Display.class); if (displayInput == null || !displayInput.isAutoFill()) return; @SuppressWarnings("unchecked") final Class<? extends Display<?>> displayType = (Class<? extends Display<?>>) displayInput.getType(); final Display<?> activeDisplay = displayService.getActiveDisplay(displayType); if (activeDisplay == null) return; final String name = displayInput.getName(); module.setInput(name, activeDisplay); module.resolveInput(name); }
@Override public void process(final Module module) { if (displayService == null || moduleService == null) return; final ModuleItem<?> displayInput = moduleService.getSingleInput(module, Display.class); if (displayInput == null || !displayInput.isAutoFill()) return; @SuppressWarnings("unchecked") final Class<? extends Display<?>> displayType = (Class<? extends Display<?>>) displayInput.getType(); final Display<?> activeDisplay = displayService.getActiveDisplay(displayType); if (activeDisplay == null) return; final String name = displayInput.getName(); module.setInput(name, activeDisplay); module.resolveInput(name); }
@Test public void testGetSingleInput() throws ModuleException { final ModuleInfo info = new FooModuleInfo(); final Module module = info.createModule(); // verify single string input is detected final ModuleItem<String> singleString = moduleService.getSingleInput(module, String.class); assertSame(info.getInput("string"), singleString); // check that non-autofilled inputs are not detected final ModuleItem<Float> singleFloat = moduleService.getSingleInput(module, Float.class); assertNull(singleFloat); // verify that multiple inputs of the same type are not detected final ModuleItem<Integer> singleInteger = moduleService.getSingleInput(module, Integer.class); assertNull(singleInteger); // verify that single input is detected if there are // non-autofilled inputs of the same kind too final ModuleItem<Double> singleDouble = moduleService.getSingleInput(module, Double.class); assertSame(info.getInput("double2"), singleDouble); }
@Override public void process(final Module module) { // assign singleton RoiManager to single RoiManager input final ModuleItem<RoiManager> roiManagerInput = moduleService.getSingleInput( module, RoiManager.class); if (roiManagerInput != null) { RoiManager roiManager; if (roiManagerInput.isRequired()) { roiManager = RoiManager.getRoiManager(); } else { roiManager = RoiManager.getInstance(); } if (roiManager == null) return; module.setInput(roiManagerInput.getName(), roiManager); module.resolveInput(roiManagerInput.getName()); } } }