Skip to content

Commit 6167b7e

Browse files
authored
Merge pull request #500 from turkeylurkey/issue-1967
Make optimizeGenerateFeatures() available to ci.maven and ci.gradle
2 parents 22403f6 + 79a1d16 commit 6167b7e

File tree

1 file changed

+26
-18
lines changed
  • src/main/java/io/openliberty/tools/common/plugins/util

1 file changed

+26
-18
lines changed

src/main/java/io/openliberty/tools/common/plugins/util/DevUtil.java

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@ private enum FileTrackMode {
438438
private boolean generateToSrc;
439439
private Set<String> generatedFeaturesSet; // set of features in generated-features.xml file
440440
private boolean generatedFeaturesModified;
441+
private boolean generatedFeaturesCopied;
441442
private Set<String> compileArtifactPaths;
442443
private Set<String> testArtifactPaths;
443444
protected File generateFeaturesFile; // the file that is created from the generate-features goal/task
@@ -565,6 +566,7 @@ public DevUtil(File buildDirectory, File serverDirectory, File sourceDirectory,
565566
this.testArtifactPaths = testArtifactPaths;
566567
this.monitoredWebResourceDirs = monitoredWebResourceDirs;
567568
this.generatedFeaturesModified = false;
569+
this.generatedFeaturesCopied = false;
568570
if (this.generateFeatures) {
569571
this.generatedFeaturesSet = getGeneratedFeatures();
570572
} else {
@@ -580,6 +582,9 @@ private void initGenerationContext() {
580582

581583
public void copyGeneratedFeaturesFile(File destinationDir) throws IOException {
582584
copyFile(generateFeaturesFile, generateFeaturesOutputDir, destinationDir, null);
585+
if (destinationDir.equals(serverDirectory)) {
586+
generatedFeaturesCopied = true; // features copied into server dir and not some temp dir
587+
}
583588
}
584589
/**
585590
* Run unit and/or integration tests
@@ -2755,15 +2760,15 @@ protected void setFeatureGeneration(boolean generateFeatures) {
27552760
logFeatureGenerationStatus();
27562761
}
27572762

2758-
private boolean optimizeGenerateFeatures(boolean useTmpDir) {
2763+
protected boolean optimizeGenerateFeatures(boolean useTmpDir) {
27592764
debug("Entering optimizeGenerateFeatures(boolean)");
27602765
return optimizeGenerateFeatures(useTmpDir, false);
27612766
}
27622767

27632768
/**
27642769
* Generate features using all classes and only user specified features.
27652770
*/
2766-
private boolean optimizeGenerateFeatures(boolean useTmpDirOut, boolean useTmpDirIn) {
2771+
protected boolean optimizeGenerateFeatures(boolean useTmpDirOut, boolean useTmpDirIn) {
27672772
debug("Generating optimized features list...use temp directory for output=" + useTmpDirOut + " use temp directory for input=" + useTmpDirIn);
27682773
// scan all class files and provide only user specified features
27692774
boolean generatedFeatures = libertyGenerateFeatures(null, true, generateToSrc, useTmpDirOut, useTmpDirIn);
@@ -3445,15 +3450,6 @@ public void watchFiles(File outputDirectory, File testOutputDirectory, final Thr
34453450
}
34463451
}
34473452

3448-
/**
3449-
*
3450-
* @return {@code Collection<String>} of class paths
3451-
* @throws IOException
3452-
*/
3453-
public Collection<String> getJavaSourceClassPaths() throws IOException {
3454-
return getClassPaths(modifiedClasses);
3455-
}
3456-
34573453
/**
34583454
*
34593455
* @param classFiles javaSourceClassFiles that have been modified
@@ -4682,14 +4678,26 @@ private void processConfigFileChange(File fileChanged, ChangeType changeType, Th
46824678
System.setProperty(SKIP_BETA_INSTALL_WARNING, Boolean.TRUE.toString());
46834679
installFeaturesToTempDir(fileChanged, fileChangedParentDir, targetFileName, generateFeaturesSuccess);
46844680
}
4685-
copyFile(fileChanged, fileChangedParentDir, serverDirectory, targetFileName);
4686-
4687-
// if the generated features file was modified as a result of another config
4688-
// file modification, copy it over to target so the server picks up the changes
4689-
// together
4681+
// Copy the config file which was changed to the server directory unless it is
4682+
// the generated features file. The generated features file may have been copied
4683+
// to the server directory already as a result of a change to the build file (pom.xml)
4684+
// or the server.xml.
4685+
if (!isGeneratedFeaturesFile) { // all other config files
4686+
copyFile(fileChanged, fileChangedParentDir, serverDirectory, targetFileName);
4687+
} else {
4688+
if (!generatedFeaturesCopied) {
4689+
copyGeneratedFeaturesFile(serverDirectory);
4690+
}
4691+
generatedFeaturesCopied = false;
4692+
}
4693+
// If the generated features file was modified as a result of another config file modification
4694+
// (usually server.xml), copy it over to target so the server picks up the two changes together
46904695
if (generateFeaturesSuccess && generatedFeaturesModified && !isGeneratedFeaturesFile) {
4691-
// this logic is not entered if the fileChanged is the generated features file
4692-
// copy generated features file to server dir
4696+
// This logic is not entered if the fileChanged is the generated features file.
4697+
// Copy generated features file to server dir and set generatedFeaturesCopied true
4698+
// (not referring to generatedFeaturesModified).
4699+
// Leave generatedFeaturesCopied true because the call to optimize/incrementalGenerateFeatures that was
4700+
// required to get into this IF block will also generate a file change event for generatedFeaturesFile
46934701
copyGeneratedFeaturesFile(serverDirectory);
46944702
generatedFeaturesModified = false;
46954703
}

0 commit comments

Comments
 (0)