You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

VaadinClasses.java 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.vaadin.tests;
  2. import java.io.File;
  3. import java.net.URISyntaxException;
  4. import java.util.List;
  5. import java.util.function.Predicate;
  6. import java.util.stream.Collectors;
  7. import java.util.stream.Stream;
  8. import com.vaadin.tests.server.ClasspathHelper;
  9. import com.vaadin.ui.Component;
  10. import com.vaadin.ui.ComponentContainer;
  11. import com.vaadin.ui.CustomComponent;
  12. import com.vaadin.ui.DragAndDropWrapper;
  13. import com.vaadin.ui.HorizontalSplitPanel;
  14. import com.vaadin.ui.LoginForm;
  15. import com.vaadin.ui.PopupView;
  16. import com.vaadin.ui.UI;
  17. import com.vaadin.ui.VerticalSplitPanel;
  18. import com.vaadin.ui.Window;
  19. @SuppressWarnings("deprecation")
  20. public class VaadinClasses {
  21. public static void main(String[] args) {
  22. System.out.println("ComponentContainers");
  23. System.out.println("===================");
  24. for (Class<? extends ComponentContainer> c : getComponentContainers()) {
  25. System.out.println(c.getName());
  26. }
  27. System.out.println();
  28. System.out.println("Components");
  29. System.out.println("==========");
  30. for (Class<? extends Component> c : getComponents()) {
  31. System.out.println(c.getName());
  32. }
  33. System.out.println();
  34. System.out.println("Server side classes");
  35. System.out.println("===================");
  36. for (Class<?> c : getAllServerSideClasses()) {
  37. System.out.println(c.getName());
  38. }
  39. }
  40. public static List<Class<? extends Component>> getComponents() {
  41. return getServerClasses(Component.class::isAssignableFrom)
  42. .map(VaadinClasses::castComponentClass)
  43. .collect(Collectors.toList());
  44. }
  45. public static List<Class<? extends Object>> getThemeClasses() {
  46. return getServerClasses(clazz -> clazz.getPackage().getName()
  47. .equals("com.vaadin.ui.themes")).collect(Collectors.toList());
  48. }
  49. public static List<Class<? extends Object>> getAllServerSideClasses() {
  50. return getServerClasses(clazz -> true).collect(Collectors.toList());
  51. }
  52. public static List<Class<? extends ComponentContainer>> getComponentContainers() {
  53. return getServerClasses(ComponentContainer.class::isAssignableFrom)
  54. .filter(clazz -> clazz.getPackage().getName()
  55. .startsWith("com.vaadin.ui"))
  56. .map(VaadinClasses::castContainerClass)
  57. .collect(Collectors.toList());
  58. }
  59. public static List<Class<? extends ComponentContainer>> getComponentContainersSupportingAddRemoveComponent() {
  60. List<Class<? extends ComponentContainer>> classes = getComponentContainers();
  61. classes.remove(PopupView.class);
  62. classes.remove(CustomComponent.class);
  63. classes.remove(DragAndDropWrapper.class);
  64. classes.remove(CustomComponent.class);
  65. classes.remove(LoginForm.class);
  66. classes.remove(UI.class);
  67. return classes;
  68. }
  69. public static List<Class<? extends ComponentContainer>> getComponentContainersSupportingUnlimitedNumberOfComponents() {
  70. List<Class<? extends ComponentContainer>> classes = getComponentContainersSupportingAddRemoveComponent();
  71. classes.remove(VerticalSplitPanel.class);
  72. classes.remove(HorizontalSplitPanel.class);
  73. classes.remove(Window.class);
  74. return classes;
  75. }
  76. public static Stream<Class<?>> getServerClasses(
  77. Predicate<? super Class<?>> predicate) {
  78. try {
  79. File testRoot = new File(
  80. VaadinClasses.class.getResource("/").toURI());
  81. ClasspathHelper helper = new ClasspathHelper();
  82. return helper
  83. .getVaadinClassesFromClasspath(
  84. entry -> !testRoot.equals(new File(entry)))
  85. .filter(predicate);
  86. } catch (URISyntaxException e) {
  87. throw new RuntimeException(e);
  88. }
  89. }
  90. private static Class<? extends Component> castComponentClass(
  91. Class<?> clazz) {
  92. return (Class<? extends Component>) clazz;
  93. }
  94. private static Class<? extends ComponentContainer> castContainerClass(
  95. Class<?> clazz) {
  96. return (Class<? extends ComponentContainer>) clazz;
  97. }
  98. }