in src/main/java/org/apache/sling/feature/cpconverter/features/DefaultFeaturesManager.java [469:509]
private void serialize(Feature feature, String runMode, RunmodeMapper runmodeMapper) throws IOException {
addAPIRegions(feature, apiRegionExports.get(runMode));
StringBuilder fileNameBuilder = new StringBuilder()
.append((prefix != null) ? prefix : "")
.append(feature.getId().getArtifactId());
String classifier = feature.getId().getClassifier();
if (classifier != null && !classifier.isEmpty()) {
fileNameBuilder.append('-').append(classifier);
}
if (properties != null) {
properties.put("filename", fileNameBuilder.toString());
}
fileNameBuilder.append(JSON_FILE_EXTENSION);
String fileName = fileNameBuilder.toString();
File targetFile = new File(featureModelsOutputDirectory, fileName);
if (!targetFile.getParentFile().exists()) {
targetFile.getParentFile().mkdirs();
}
if (artifactIdOverride != null && !artifactIdOverride.isEmpty()) {
String interpolatedIdOverride = interpolator.interpolate(artifactIdOverride, properties);
ArtifactId idOverrride = appendRunmode(ArtifactId.parse(interpolatedIdOverride), runMode);
feature = feature.copy(idOverrride);
}
logger.info("Writing resulting Feature Model '{}' to file '{}'...", feature.getId(), targetFile);
try (FileWriter targetWriter = new FileWriter(targetFile)) {
FeatureJSONWriter.write(targetWriter, feature);
logger.info("'{}' Feature File successfully written!", targetFile);
runmodeMapper.addOrUpdate(runMode, fileName);
}
}