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
16 changes: 12 additions & 4 deletions src/main/groovy/io/openliberty/tools/gradle/tasks/DevTask.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -702,7 +702,8 @@ class DevTask extends AbstractFeatureTask {
if (optimizeGenerateFeatures && generateFeatures) {
logger.debug("Detected a change in the compile dependencies, regenerating features");
// optimize generate features on build dependency change
boolean generateFeaturesSuccess = libertyGenerateFeatures(null, true);
// If generateToSrc is false then we must copy new generated features file from temp dir to server dir after install
boolean generateFeaturesSuccess = libertyGenerateFeatures(null, true, !generateToSrc);
if (generateFeaturesSuccess) {
util.javaSourceClassPaths.clear();
} else {
Expand All @@ -726,6 +727,10 @@ class DevTask extends AbstractFeatureTask {
libertyDependencyWarning(e.getCause());
}
}
// If generateToSrc is false then we must copy new generated features file from temp dir to server dir after install
if (generateFeaturesSuccess && !generateToSrc) {
util.copyTempFeatureFileToServer(getServerDir(project)); // finalize the generate-features operation
}
}
return true;
}
Expand Down Expand Up @@ -1026,7 +1031,7 @@ class DevTask extends AbstractFeatureTask {
}

@Override
public boolean libertyGenerateFeatures(Collection<String> classes, boolean optimize) {
public boolean libertyGenerateFeatures(Collection<String> classes, boolean optimize, boolean useTmpDir) {
ProjectConnection gradleConnection = initGradleProjectConnection();
BuildLauncher gradleBuildLauncher = gradleConnection.newBuild();

Expand All @@ -1037,6 +1042,7 @@ class DevTask extends AbstractFeatureTask {
options.add("--classFile=" + it);
}
options.add("--optimize=" + optimize);
options.add("--internalDevMode="+useTmpDir);
runGenerateFeaturesTask(gradleBuildLauncher, options);
return true; // successfully generated features
} catch (BuildException e) {
Expand Down Expand Up @@ -1158,9 +1164,10 @@ class DevTask extends AbstractFeatureTask {
runGradleTask(gradleBuildLauncher, tasks);
}

public void runGenerateFeaturesTask(BuildLauncher gradleBuildLauncher, boolean optimize) throws BuildException {
public void runGenerateFeaturesTask(BuildLauncher gradleBuildLauncher, boolean optimize, boolean useTmpDir) throws BuildException {
List<String> options = new ArrayList<String>();
options.add("--optimize="+optimize);
options.add("--internalDevMode="+useTmpDir);
runGenerateFeaturesTask(gradleBuildLauncher, options);
}

Expand Down Expand Up @@ -1342,7 +1349,8 @@ class DevTask extends AbstractFeatureTask {
"The source configuration directory will be modified. Features will automatically be generated in a new file: "
+ generatedFileCanonicalPath);
try {
runGenerateFeaturesTask(gradleBuildLauncher, true);
// Only generate to a tmp dir once the dev mode loop has started.
runGenerateFeaturesTask(gradleBuildLauncher, true, false);
} catch (BuildException e) {
Exception pluginEx = getPluginExecutionException(e);
if (pluginEx != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,8 @@ class GenerateFeaturesTask extends AbstractFeatureTask {

logger.debug("--- Generate Features values ---");
logger.debug("optimize generate features: " + optimize);
logger.debug("generate to src or build: " + generationContextDir);
logger.debug("called by dev mode internalDevMode: " + internalDevMode);
logger.debug("generate to src or build: " + (internalDevMode ? GENERATED_FEATURES_TEMP_PATH : generationContextDir.getAbsolutePath()));
if (classFiles != null && !classFiles.isEmpty()) {
logger.debug("Generate features for the following class files: " + classFiles);
}
Expand Down Expand Up @@ -261,7 +262,7 @@ class GenerateFeaturesTask extends AbstractFeatureTask {
logger.lifecycle("Generated the following features: " + missingLibertyFeatures);
// use logger.lifecycle so that message appears without --info tag on
configDocument.writeXMLDocument(generatedXmlFile);
logger.debug("Created file " + generatedXmlFile);
logger.debug("Created file " + generatedXmlFile.getAbsolutePath());
} else {
logger.lifecycle("Regenerated the following features: " + missingLibertyFeatures);
// use logger.lifecycle so that message appears without --info tag on
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class BaseDevTest extends AbstractIntegrationTest {
final String REGENERATE_FEATURES = "Regenerated the following features:";
final String GENERATE_FEATURES = "Generated the following features:";
final String GENERATED_FEATURES_FILE_NAME = "generated-features.xml";
final String SERVER_XML_COMMENT = "Plugin has generated Liberty features"; // the explanation added to server.xml
//final String SERVER_XML_COMMENT = "Plugin has generated Liberty features"; // the explanation added to server.xml
final String NEW_FILE_INFO_MESSAGE = "This file was generated by the Liberty Gradle Plugin and will be overwritten"; // the explanation added to the generated features file
final String SERVER_CONFIG_SUCCESS = "CWWKZ0003I:";// CWWKZ0003I: The application xxx updated in y.yyy seconds.
final String SERVER_UPDATE_COMPLETE = "CWWKF0008I:"; // Feature update completed in 0.649 seconds.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class BaseGenerateFeaturesTest extends AbstractIntegrationTest {
static final String GENERATED_FEATURES_FILE_NAME = "generated-features.xml";
static final String GENERATED_FEATURES_FILE_PATH = "/build/wlp/usr/servers/defaultServer/configDropins/overrides/" + GENERATED_FEATURES_FILE_NAME;
static final String GENERATED_FEATURES_FILE_PATH_SRC = "/src/main/liberty/config/configDropins/overrides/" + GENERATED_FEATURES_FILE_NAME;
static final String GENERATED_FEATURES_FILE_PATH_TMP = "/build/.libertyFeatures/" + GENERATED_FEATURES_FILE_NAME;
static final String GENERATED_FEATURES_FILE_PATH_TMP = "/build/.libertyFeatures/configDropins/overrides/" + GENERATED_FEATURES_FILE_NAME;
static final String UMBRELLA_EE = "providedCompile \"jakarta.platform:jakarta.jakartaee-api:8.0.0\"";
static final String UMBRELLA_MP = "providedCompile \"org.eclipse.microprofile:microprofile:3.2\"";
static final String ESA_EE_DEPENDENCY = "providedCompile 'io.openliberty.features:servlet-4.0:22.0.0.2'";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ class DevRecompileTest extends BaseDevTest {
int runGenerateFeaturesCount = countOccurrences(RUNNING_GENERATE_FEATURES, logFile);
int installedFeaturesCount = countOccurrences(SERVER_INSTALLED_FEATURES, errFile);

File newFeatureFile = new File(buildDir, "src/main/liberty/config/configDropins/overrides/"+GENERATED_FEATURES_FILE_NAME);
// File newFeatureFile = new File(buildDir, "src/main/liberty/config/configDropins/overrides/"+GENERATED_FEATURES_FILE_NAME);
File newTargetFeatureFile = new File(targetDir, "wlp/usr/servers/defaultServer/configDropins/overrides/"+GENERATED_FEATURES_FILE_NAME);
File serverXmlFile = new File(buildDir, "src/main/liberty/config/server.xml");
assertTrue(serverXmlFile.exists());
Expand Down Expand Up @@ -90,11 +90,11 @@ class DevRecompileTest extends BaseDevTest {
verifyFileExists(helloBatchObj, 15000);
// ... and run the proper task.
assertTrue(verifyLogMessage(10000, RUNNING_GENERATE_FEATURES, ++runGenerateFeaturesCount));
assertTrue(verifyFileExists(newFeatureFile, 5000)); // task created file
assertTrue(verifyFileExists(newTargetFeatureFile, 5000)); // dev mode copied file
assertTrue(verifyLogMessage(10000, "batch-1.0", newFeatureFile));
assertTrue(verifyLogMessage(10000, NEW_FILE_INFO_MESSAGE, newFeatureFile));
assertTrue(verifyLogMessage(10000, SERVER_XML_COMMENT, serverXmlFile));
//assertTrue(verifyFileExists(newFeatureFile, 5000));
assertTrue(verifyFileExists(newTargetFeatureFile, 5000)); // task created file
assertTrue(verifyLogMessage(10000, "batch-1.0", newTargetFeatureFile));
assertTrue(verifyLogMessage(10000, NEW_FILE_INFO_MESSAGE, newTargetFeatureFile));
//assertTrue(verifyLogMessage(10000, SERVER_XML_COMMENT, serverXmlFile)); no comment added to server.xml
// should appear as part of the message "CWWKF0012I: The server installed the following features:"
assertTrue(verifyLogMessage(123000, SERVER_INSTALLED_FEATURES, errFile, ++installedFeaturesCount));

Expand Down
2 changes: 1 addition & 1 deletion src/test/groovy/io/openliberty/tools/gradle/DevTest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ class DevTest extends BaseDevTest {
//assertTrue(verifyFileExists(newTargetFeatureFile, 5000)); // dev mode copied file
assertTrue(verifyLogMessage(10000, "batch-1.0", newFeatureFile));
assertTrue(verifyLogMessage(10000, NEW_FILE_INFO_MESSAGE, newFeatureFile));
assertTrue(verifyLogMessage(10000, SERVER_XML_COMMENT, serverXmlFile));
// assertTrue(verifyLogMessage(10000, SERVER_XML_COMMENT, serverXmlFile)); no comment added to server.xml
// should appear as part of the message "CWWKF0012I: The server installed the following features:"
assertTrue(verifyLogMessage(123000, SERVER_INSTALLED_FEATURES, errFile, ++installedFeaturesCount));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ class GenerateFeaturesTest extends BaseGenerateFeaturesTest {
@Test
public void serverXmlCommentNoFMTest() throws Exception {
// initially the expected comment is not found in server.xml
assertFalse(verifyLogMessageExists(GenerateFeaturesTask.FEATURES_FILE_MESSAGE, 10, serverXmlFile));
// assertFalse(verifyLogMessageExists(GenerateFeaturesTask.FEATURES_FILE_MESSAGE, 10, serverXmlFile));
// also we wish to test behaviour when there is no <featureManager> element so test that
assertFalse(verifyLogMessageExists("<featureManager>", 10, serverXmlFile));

Expand All @@ -168,8 +168,8 @@ class GenerateFeaturesTest extends BaseGenerateFeaturesTest {
Charset charset = StandardCharsets.UTF_8;
String serverXmlContents = new String(Files.readAllBytes(serverXmlFile.toPath()), charset);
serverXmlContents = "\n" + serverXmlContents;
assertTrue(serverXmlContents,
verifyLogMessageExists(GenerateFeaturesTask.FEATURES_FILE_MESSAGE, 100, serverXmlFile));
// assertTrue(serverXmlContents,
// verifyLogMessageExists(GenerateFeaturesTask.FEATURES_FILE_MESSAGE, 100, serverXmlFile));
}

@Test
Expand All @@ -181,7 +181,7 @@ class GenerateFeaturesTest extends BaseGenerateFeaturesTest {
" </featureManager>\n", serverXmlFile);

// initially the expected comment is not found in server.xml
assertFalse(verifyLogMessageExists(GenerateFeaturesTask.FEATURES_FILE_MESSAGE, 10, serverXmlFile));
// assertFalse(verifyLogMessageExists(GenerateFeaturesTask.FEATURES_FILE_MESSAGE, 10, serverXmlFile));

runCompileAndGenerateFeatures(null);

Expand All @@ -192,8 +192,8 @@ class GenerateFeaturesTest extends BaseGenerateFeaturesTest {
Charset charset = StandardCharsets.UTF_8;
String serverXmlContents = new String(Files.readAllBytes(serverXmlFile.toPath()), charset);
serverXmlContents = "\n" + serverXmlContents;
assertTrue(serverXmlContents,
verifyLogMessageExists(GenerateFeaturesTask.FEATURES_FILE_MESSAGE, 100, serverXmlFile));
// assertTrue(serverXmlContents,
// verifyLogMessageExists(GenerateFeaturesTask.FEATURES_FILE_MESSAGE, 100, serverXmlFile));
}

/**
Expand Down