public static void addEventHandlerRegistrationMethods(Option option, JDefinedClass jClass) { List<JClass> list = EventRegistry.INSTANCE.getRegistry().get(option.getFullname()); if (list != null) { for (JClass handlerClass : list) { String handlerClassName = handlerClass.name(); String paramName = handlerClassName.substring(0, 1).toLowerCase() + handlerClassName.substring(1); jClass .method(JMod.NONE, void.class, EventHelper.ADD_HANDLER_METHOD_PREFIX + handlerClassName) .param(handlerClass, paramName); } } }
public static JDefinedClass createEventHandlerInterface( Option option, String packageName, String rootDirectoryPathName) { JCodeModel model = new JCodeModel(); JDefinedClass jClass = null; try { String eventName = EventHelper.getEventNamePrefix(option); String handlerName = eventName + EventHelper.HANDLER_SUFFIX; String fullyqualifiedName = packageName + "." + handlerName; jClass = model._class(fullyqualifiedName, ClassType.INTERFACE); JClass eventClass = ClassRegistry.INSTANCE .getRegistry() .get(new ClassRegistry.RegistryKey(option, OutputType.Interface)); jClass .method(JMod.NONE, void.class, EventHelper.ON_PREFIX + eventName) .param(eventClass, EventHelper.paramName(eventName)); EventRegistry.INSTANCE.put(EventHelper.getRegistryKey(option), jClass); logger.info("Handler created;" + handlerName); } catch (JClassAlreadyExistsException e) { throw new RuntimeException(e); } try { model.build(new File(rootDirectoryPathName)); } catch (IOException e) { throw new RuntimeException(e); } return jClass; }