public InitMethodPoint[] resolve(final Class<?> type) { // lookup methods List<InitMethodPoint> list = new ArrayList<>(); ClassDescriptor cd = new ClassDescriptor(type, false, false, false, null); MethodDescriptor[] allMethods = cd.getAllMethodDescriptors(); for (MethodDescriptor methodDescriptor : allMethods) { Method method = methodDescriptor.getMethod(); PetiteInitMethod petiteInitMethod = method.getAnnotation(PetiteInitMethod.class); if (petiteInitMethod == null) { continue; } if (method.getParameterTypes().length > 0) { throw new PetiteException("Arguments are not allowed for Petite init method: " + type.getName() + '#' + method.getName()); } int order = petiteInitMethod.order(); list.add(new InitMethodPoint(method, order, petiteInitMethod.invoke())); } InitMethodPoint[] methods; if (list.isEmpty()) { methods = InitMethodPoint.EMPTY; } else { Collections.sort(list); methods = list.toArray(new InitMethodPoint[0]); } return methods; }
/** * Registers init method. * * @param beanName bean name * @param invocationStrategy moment of invocation * @param initMethodNames init method names */ public void registerPetiteInitMethods(final String beanName, final InitMethodInvocationStrategy invocationStrategy, String... initMethodNames) { BeanDefinition beanDefinition = lookupExistingBeanDefinition(beanName); ClassDescriptor cd = ClassIntrospector.get().lookup(beanDefinition.type); if (initMethodNames == null) { initMethodNames = StringPool.EMPTY_ARRAY; } int total = initMethodNames.length; InitMethodPoint[] initMethodPoints = new InitMethodPoint[total]; int i; for (i = 0; i < initMethodNames.length; i++) { MethodDescriptor md = cd.getMethodDescriptor(initMethodNames[i], ClassUtil.EMPTY_CLASS_ARRAY, true); if (md == null) { throw new PetiteException("Init method not found: " + beanDefinition.type.getName() + '#' + initMethodNames[i]); } initMethodPoints[i] = new InitMethodPoint(md.getMethod(), i, invocationStrategy); } beanDefinition.addInitMethodPoints(initMethodPoints); }
public InitMethodPoint[] resolve(final Class<?> type) { // lookup methods List<InitMethodPoint> list = new ArrayList<>(); ClassDescriptor cd = new ClassDescriptor(type, false, false, false, null); MethodDescriptor[] allMethods = cd.getAllMethodDescriptors(); for (MethodDescriptor methodDescriptor : allMethods) { Method method = methodDescriptor.getMethod(); PetiteInitMethod petiteInitMethod = method.getAnnotation(PetiteInitMethod.class); if (petiteInitMethod == null) { continue; } if (method.getParameterTypes().length > 0) { throw new PetiteException("Arguments are not allowed for Petite init method: " + type.getName() + '#' + method.getName()); } int order = petiteInitMethod.order(); list.add(new InitMethodPoint(method, order, petiteInitMethod.invoke())); } InitMethodPoint[] methods; if (list.isEmpty()) { methods = InitMethodPoint.EMPTY; } else { Collections.sort(list); methods = list.toArray(new InitMethodPoint[0]); } return methods; }
/** * Registers init method. * * @param beanName bean name * @param invocationStrategy moment of invocation * @param initMethodNames init method names */ public void registerPetiteInitMethods(final String beanName, final InitMethodInvocationStrategy invocationStrategy, String... initMethodNames) { BeanDefinition beanDefinition = lookupExistingBeanDefinition(beanName); ClassDescriptor cd = ClassIntrospector.get().lookup(beanDefinition.type); if (initMethodNames == null) { initMethodNames = StringPool.EMPTY_ARRAY; } int total = initMethodNames.length; InitMethodPoint[] initMethodPoints = new InitMethodPoint[total]; int i; for (i = 0; i < initMethodNames.length; i++) { MethodDescriptor md = cd.getMethodDescriptor(initMethodNames[i], ClassUtil.EMPTY_CLASS_ARRAY, true); if (md == null) { throw new PetiteException("Init method not found: " + beanDefinition.type.getName() + '#' + initMethodNames[i]); } initMethodPoints[i] = new InitMethodPoint(md.getMethod(), i, invocationStrategy); } beanDefinition.addInitMethodPoints(initMethodPoints); }