/** * Registers new Madvoc component. */ protected void acceptMadvocComponentClass(final Class componentClass) { if (componentClass == null) { return; } if (!checkClass(componentClass)) { return; } madvocComponents.add(() -> madvocContainer.registerComponent(componentClass)); }
@Override public void start() { final long startTime = System.currentTimeMillis(); webappConfigurations.forEach(Runnable::run); elapsed += (System.currentTimeMillis() - startTime); log.info(createInfoMessage()); }
public AutomagicMadvocConfigurator(final ClassScanner classScanner) { actionClassSuffix = "Action"; this.classScanner = classScanner; registerAsConsumer(classScanner); }
/** * Parses class name that matches madvoc-related names. */ protected void registerAsConsumer(final ClassScanner classScanner) { classScanner.registerEntryConsumer(classPathEntry -> { final String entryName = classPathEntry.name(); if (entryName.endsWith(actionClassSuffix)) { try { acceptActionClass(classPathEntry.loadClass()); } catch (Exception ex) { log.debug("Invalid Madvoc action, ignoring: " + entryName); } } else if (classPathEntry.isTypeSignatureInUse(MADVOC_COMPONENT_ANNOTATION)) { try { acceptMadvocComponentClass(classPathEntry.loadClass()); } catch (Exception ex) { log.debug("Invalid Madvoc component ignoring: {}" + entryName); } } }); }
public AutomagicMadvocConfigurator() { actionClassSuffix = "Action"; classScanner = new ClassScanner(); classScanner.detectEntriesMode(true); classScanner.scanDefaultClasspath(); registerAsConsumer(classScanner); }
/** * Builds action runtime configuration on founded action class. * Action classes are annotated with {@link jodd.madvoc.meta.MadvocAction} annotation. */ @SuppressWarnings("NonConstantStringShouldBeStringBuffer") protected void acceptActionClass(final Class<?> actionClass) { if (actionClass == null) { return; } if (!checkClass(actionClass)) { return; } if (actionClass.getAnnotation(MadvocAction.class) == null) { return; } ClassDescriptor cd = ClassIntrospector.get().lookup(actionClass); MethodDescriptor[] allMethodDescriptors = cd.getAllMethodDescriptors(); for (MethodDescriptor methodDescriptor : allMethodDescriptors) { if (!methodDescriptor.isPublic()) { continue; } // just public methods final Method method = methodDescriptor.getMethod(); final boolean hasAnnotation = actionConfigManager.hasActionAnnotationOn(method); if (!hasAnnotation) { continue; } webappConfigurations.add(() -> actionsManager.registerAction(actionClass, method, null)); } }