Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

provide better error message for prepare feature #415

Merged
merged 6 commits into from
Sep 22, 2023
Merged
Changes from 1 commit
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
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,13 @@

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public abstract class PrepareFeatureUtil extends ServerFeatureUtil {

Expand Down Expand Up @@ -79,18 +81,21 @@ public void prepareFeatures(List<String> featureBOMs) throws PluginExecutionExce
String version = coord[2];
File additionalBOM = downloadArtifact(groupId, artifactId, "pom", version);
esaMap.putAll(populateESAMap(additionalBOM));
prepareFeature(groupId, artifactId, version, additionalBOM, esaMap);
if(esaMap.isEmpty()) {
warn("There were no feature ESA files to generate feature.json. Please ignore this warning if this is not a user feature.");
cherylking marked this conversation as resolved.
Show resolved Hide resolved
}else {
prepareFeature(groupId, artifactId, version, additionalBOM, esaMap);
}
}

}

private Map<File, String> populateESAMap(File additionalBOM) {
private Map<File, String> populateESAMap(File additionalBOM) throws PluginExecutionException {
cherylking marked this conversation as resolved.
Show resolved Hide resolved
Map<File, String> result = new HashMap<File, String>();
try {
result = downloadArtifactsFromBOM(additionalBOM);
result = downloadArtifactsFromBOM(additionalBOM);
} catch (PluginExecutionException e) {
warn(e.getMessage());
warn("A features-bom file must be provided at " + additionalBOM.getAbsolutePath() + ". Please ignore this warning if this is not a user feature.");
warn(e.getMessage());
}

return result;
Expand All @@ -105,24 +110,25 @@ private Map<File, String> populateESAMap(File additionalBOM) {
* @throws PluginExecutionException
*/
private void prepareFeature(String groupId, String artifactId, String version, File additionalBOM, Map<File, String> esaMap) throws PluginExecutionException {
try {
String repoLocation = parseRepositoryLocation(additionalBOM, groupId, artifactId, "pom", version);
String targetJsonFile = createArtifactFilePath(repoLocation, groupId, FEATURES_JSON_ARTIFACT_ID, "json",
version);
File generatedJson = generateJson(targetJsonFile, esaMap);
if (generatedJson.exists()) {
jsonFile = generatedJson;
provideJsonFileDependency(generatedJson, groupId, version);
info("The features.json has been generated at the following location: " + generatedJson);
}
} catch (PluginExecutionException e) {
warn(e.getMessage());
}
try {
String repoLocation = parseRepositoryLocation(additionalBOM, groupId, artifactId, "pom", version);
String targetJsonFile = createArtifactFilePath(repoLocation, groupId, FEATURES_JSON_ARTIFACT_ID, "json",
version);
File generatedJson = generateJson(targetJsonFile, esaMap);
if (generatedJson.exists()) {
jsonFile = generatedJson;
provideJsonFileDependency(generatedJson, groupId, version);
info("The features.json has been generated at the following location: " + generatedJson);
jjiwooLim marked this conversation as resolved.
Show resolved Hide resolved
}
cherylking marked this conversation as resolved.
Show resolved Hide resolved

} catch (PluginExecutionException e) {
cherylking marked this conversation as resolved.
Show resolved Hide resolved
warn(e.getMessage());
}
}

/**
* Download the Artifacts mentioned within the additionalBOM pom file
* Download the Artifacts mentioned within the additionalBOM pom file.
* Required artifact properties are "groupId, artifactId, version and type".
* If any of the properties are missing, then it will throw NullPointerException.
*
* @param additionalBOM The BOM file
* @return A map of Files to groupIds
Expand Down Expand Up @@ -150,11 +156,12 @@ private Map<File, String> downloadArtifactsFromBOM(File additionalBOM) throws Pl
result.put(artifactFile, groupId);
}
}
} catch (PluginExecutionException e) { // we were unable to download artifact mentioned in BOM
throw e;
} catch (Exception e) {
throw new PluginExecutionException("Cannot read the BOM file " + additionalBOM.getAbsolutePath(), e);
}
} catch (ParserConfigurationException | SAXException | IOException | NullPointerException e) {
cherylking marked this conversation as resolved.
Show resolved Hide resolved
// TODO Auto-generated catch block
debug(e);
throw new PluginExecutionException("Cannot read the BOM file " + additionalBOM.getAbsolutePath() + ". " + e.getMessage());

}
return result;
}

Expand Down Expand Up @@ -291,7 +298,7 @@ private File downloadOverrideJar(String groupId, String artifactId) {
openLibertyVersion + ", " + InstallFeatureUtil.getNextProductVersion(openLibertyVersion)));
} catch (PluginExecutionException e) {
debug("Could not find override bundle " + groupId + ":" + artifactId
+ " for the current Open Liberty version " + openLibertyVersion, e);
+ " for the current Open Liberty version " + openLibertyVersion + e.getMessage());
return null;
}
}
Expand Down