Skip to content

Commit 8cfca6e

Browse files
authored
fix: No react module for Vaadin Router (#19878)
* fix: No react module for Vaadin Router Remove reactOutlet module if we are not running react, but are using Vaadin Router inferred from index.ts Fixes #19870 * Simplify
1 parent c120a07 commit 8cfca6e

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FrontendDependenciesScanner.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ public FrontendDependenciesScanner createScanner(
100100
if (allDependenciesScan) {
101101
// this dep scanner can't distinguish embeddable web component
102102
// frontend related annotations
103-
return new FullDependenciesScanner(finder, featureFlags);
103+
return new FullDependenciesScanner(finder, featureFlags,
104+
reactEnabled);
104105
} else {
105106
return new FrontendDependencies(finder,
106107
generateEmbeddableWebComponents, featureFlags,

flow-server/src/main/java/com/vaadin/flow/server/frontend/scanner/FullDependenciesScanner.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,24 @@ class FullDependenciesScanner extends AbstractDependenciesScanner {
9191
* available feature flags and their status
9292
*/
9393
FullDependenciesScanner(ClassFinder finder, FeatureFlags featureFlags) {
94-
this(finder, AnnotationReader::getAnnotationsFor, featureFlags);
94+
this(finder, AnnotationReader::getAnnotationsFor, featureFlags, true);
95+
}
96+
97+
/**
98+
* Creates a new scanner instance which discovers all dependencies in the
99+
* classpath.
100+
*
101+
* @param finder
102+
* a class finder
103+
* @param featureFlags
104+
* available feature flags and their status
105+
* @param reactEnabled
106+
* true if react classes are enabled
107+
*/
108+
FullDependenciesScanner(ClassFinder finder, FeatureFlags featureFlags,
109+
boolean reactEnabled) {
110+
this(finder, AnnotationReader::getAnnotationsFor, featureFlags,
111+
reactEnabled);
95112
}
96113

97114
/**
@@ -104,10 +121,12 @@ class FullDependenciesScanner extends AbstractDependenciesScanner {
104121
* a strategy to discover class annotations
105122
* @param featureFlags
106123
* available feature flags and their status
124+
* @param reactEnabled
125+
* true if react classes are enabled
107126
*/
108127
FullDependenciesScanner(ClassFinder finder,
109128
SerializableBiFunction<Class<?>, Class<? extends Annotation>, List<? extends Annotation>> annotationFinder,
110-
FeatureFlags featureFlags) {
129+
FeatureFlags featureFlags, boolean reactEnabled) {
111130
super(finder, featureFlags);
112131

113132
long start = System.currentTimeMillis();
@@ -144,6 +163,11 @@ class FullDependenciesScanner extends AbstractDependenciesScanner {
144163
collectScripts(scriptsSet, scriptsSetDevelopment, JavaScript.class);
145164
cssData = discoverCss();
146165

166+
if (!reactEnabled) {
167+
modulesSet.removeIf(
168+
module -> module.contains("ReactRouterOutletElement.tsx"));
169+
}
170+
147171
modules = new ArrayList<>(modulesSet);
148172
modulesDevelopment = new ArrayList<>(modulesSetDevelopment);
149173
scripts = new ArrayList<>(scriptsSet);

flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FullDependenciesScannerTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,7 @@ public void getModules_explcitTheme_returnAllModulesExcludingNotUsedTheme_getCla
336336
}
337337
Assert.fail();
338338
return null;
339-
}, null);
339+
}, null, true);
340340

341341
DepsTests.assertImportCount(28, scanner.getModules());
342342
List<String> modules = DepsTests.merge(scanner.getModules());
@@ -405,7 +405,7 @@ private FullDependenciesScanner setUpAnnotationScanner(
405405

406406
return new FullDependenciesScanner(finder,
407407
(type, annotation) -> findAnnotations(type, annotationType),
408-
null);
408+
null, true);
409409
}
410410

411411
private FullDependenciesScanner setUpThemeScanner(
@@ -425,7 +425,8 @@ private FullDependenciesScanner setUpThemeScanner(
425425
Mockito.when(finder.getAnnotatedClasses(fakeNoThemeClass))
426426
.thenReturn(noThemeClasses);
427427

428-
return new FullDependenciesScanner(finder, annotationFinder, null) {
428+
return new FullDependenciesScanner(finder, annotationFinder, null,
429+
true) {
429430
@Override
430431
protected Class<? extends AbstractTheme> getLumoTheme() {
431432
return FakeLumoTheme.class;

flow-server/src/test/java/com/vaadin/flow/server/frontend/scanner/FullScannerPwaTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ protected PwaConfiguration getPwaConfiguration(Class<?>... classes)
2727
.getAnnotatedClasses(clazz);
2828

2929
FullDependenciesScanner fullDependenciesScanner = new FullDependenciesScanner(
30-
finder, (type, annotation) -> findPwaAnnotations(type), null);
30+
finder, (type, annotation) -> findPwaAnnotations(type), null,
31+
true);
3132
return fullDependenciesScanner.getPwaConfiguration();
3233
}
3334

0 commit comments

Comments
 (0)