Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 19 additions & 4 deletions src/main/java/org/openjfx/gradle/JavaFXModule.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,33 +48,48 @@ public enum JavaFXModule {
FXML(BASE, GRAPHICS),
MEDIA(BASE, GRAPHICS),
SWING(BASE, GRAPHICS),
WEB(BASE, CONTROLS, GRAPHICS, MEDIA);
WEB(BASE, CONTROLS, GRAPHICS, MEDIA),
INPUT_INCUBATOR(true, BASE, GRAPHICS, CONTROLS),
RICHTEXT_INCUBATOR(true, BASE, GRAPHICS, CONTROLS, INPUT_INCUBATOR),
;

static final String PREFIX_MODULE = "javafx.";
static final String INCUBATOR_PREFIX_MODULE = "jfx.incubator.";
private static final String PREFIX_ARTIFACT = "javafx-";
private static final String INCUBATOR_PREFIX_ARTIFACT = "jfx-incubator-";

private final List<JavaFXModule> dependentModules;
private final boolean isIncubator;

JavaFXModule(JavaFXModule...dependentModules) {
JavaFXModule(boolean isIncubator, JavaFXModule... dependentModules) {
this.isIncubator = isIncubator;
this.dependentModules = List.of(dependentModules);
}

JavaFXModule(JavaFXModule...dependentModules) {
this(false, dependentModules);
}

public static Optional<JavaFXModule> fromModuleName(String moduleName) {
return Stream.of(JavaFXModule.values())
.filter(javaFXModule -> moduleName.equals(javaFXModule.getModuleName()))
.findFirst();
}

private String baseName() {
return name().replace("_INCUBATOR", "").toLowerCase(Locale.ROOT);
}

public String getModuleName() {
return PREFIX_MODULE + name().toLowerCase(Locale.ROOT);
return (isIncubator ? INCUBATOR_PREFIX_MODULE : PREFIX_MODULE) + baseName();
}

public String getModuleJarFileName() {
return getModuleName() + ".jar";
}

public String getArtifactName() {
return PREFIX_ARTIFACT + name().toLowerCase(Locale.ROOT);
return (isIncubator ? INCUBATOR_PREFIX_ARTIFACT : PREFIX_ARTIFACT) + baseName();
}

public boolean compareJarFileName(JavaFXPlatform platform, String jarFileName) {
Expand Down
22 changes: 22 additions & 0 deletions src/test/java/org/openjfx/gradle/JavaFXModuleTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,28 @@ void getArtifactName() {
assertEquals("javafx-base", JavaFXModule.BASE.getArtifactName());
}

@Test
void existingIncubatorModuleName() {
Optional<JavaFXModule> javafxDependency = JavaFXModule.fromModuleName("jfx.incubator.richtext");
assertTrue(javafxDependency.isPresent(), "Expected the text to convert to a module, but it did not");
assertEquals(JavaFXModule.RICHTEXT_INCUBATOR, javafxDependency.get());
}

@Test
void nonExistingIncubatorModuleName() {
assertTrue(JavaFXModule.fromModuleName("jfx.incubator.unknown").isEmpty(), "Somehow got a module from an unknown module name.");
}

@Test
void getIncubatorModuleName() {
assertEquals("jfx.incubator.richtext", JavaFXModule.RICHTEXT_INCUBATOR.getModuleName());
}

@Test
void getIncubatorArtifactName() {
assertEquals("jfx-incubator-richtext", JavaFXModule.RICHTEXT_INCUBATOR.getArtifactName());
}

@Test
void validateWithValidModules() {
var moduleNames = List.of(JavaFXModule.CONTROLS.getModuleName(), JavaFXModule.WEB.getModuleName());
Expand Down