123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- package com.vaadin.server;
-
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertNotNull;
- import static org.junit.Assert.assertTrue;
-
- import java.lang.reflect.Method;
- import java.lang.reflect.Modifier;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.function.Predicate;
- import java.util.regex.Pattern;
-
- import org.junit.Test;
-
- import com.vaadin.data.provider.AbstractDataProvider;
- import com.vaadin.event.EventRouter;
- import com.vaadin.event.MethodEventSource;
- import com.vaadin.shared.Registration;
- import com.vaadin.tests.VaadinClasses;
-
- public class RemoveListenersDeprecatedTest {
-
- private static final List<Predicate<Method>> ALLOW_REMOVE_LISTENER = new ArrayList<>();
-
- static {
- ALLOW_REMOVE_LISTENER.add(
- RemoveListenersDeprecatedTest::acceptAbstarctClientConnectorRemoveMethods);
- ALLOW_REMOVE_LISTENER
- .add(RemoveListenersDeprecatedTest::acceptAbstractDataProvider);
- ALLOW_REMOVE_LISTENER
- .add(RemoveListenersDeprecatedTest::acceptMethodEventSource);
- }
-
- @Test
- public void allRemoveListenerMethodsMarkedAsDeprecated() {
- Pattern removePattern = Pattern.compile("remove.*Listener");
- Pattern addPattern = Pattern.compile("add.*Listener");
- int count = 0;
- for (Class<? extends Object> serverClass : VaadinClasses
- .getAllServerSideClasses()) {
- count++;
- if (serverClass.equals(EventRouter.class)) {
- continue;
- }
- for (Method method : serverClass.getDeclaredMethods()) {
- if (Modifier.isPrivate(method.getModifiers())) {
- continue;
- }
- if (addPattern.matcher(method.getName()).matches()
- && method.getAnnotation(Deprecated.class) == null) {
- Class<?> returnType = method.getReturnType();
- assertEquals("Method " + method.getName()
- + " is not deprectated in class "
- + serverClass.getName()
- + " and doesn't return a Registration object",
- Registration.class, returnType);
- }
- if (ALLOW_REMOVE_LISTENER.stream()
- .anyMatch(predicate -> predicate.test(method))) {
- continue;
- }
-
- if (removePattern.matcher(method.getName()).matches()) {
- assertNotNull(
- "Method " + method.getName() + " in class "
- + serverClass.getName()
- + " has not been marked as deprecated.",
- method.getAnnotation(Deprecated.class));
- }
- }
- }
- assertTrue(count > 0);
- }
-
- private static boolean acceptMethodEventSource(Method method) {
- return method.getDeclaringClass().equals(MethodEventSource.class)
- && method.getParameterCount() == 2;
- }
-
- private static boolean acceptAbstarctClientConnectorRemoveMethods(
- Method method) {
- if (method.getDeclaringClass().equals(AbstractClientConnector.class)) {
- if (method.getParameterCount() == 2) {
- return true;
- } else if (method.getParameterCount() == 0) {
- return false;
- } else {
- return method.getParameterTypes()[0].equals(String.class);
- }
- }
- return false;
- }
-
- private static boolean acceptAbstractDataProvider(Method method) {
- return method.getDeclaringClass().equals(AbstractDataProvider.class)
- && method.getParameterCount() == 2;
- }
- }
|