in src/main/java/org/apache/sling/maven/slingstart/PreparePackageMojo.java [450:493]
private int createSubsystemManifest(Feature feature,
Map<String, Integer> startOrderMap, ZipOutputStream os) throws IOException {
int subsystemStartLevel = -1;
ZipEntry ze = new ZipEntry("SUBSYSTEM-MANIFEST-BASE.MF");
try {
os.putNextEntry(ze);
Manifest mf = new Manifest();
Attributes attributes = mf.getMainAttributes();
attributes.putValue("Manifest-Version", "1.0"); // Manifest does not work without this value
attributes.putValue("Subsystem-SymbolicName", feature.getName());
attributes.putValue("Subsystem-Version", "1"); // Version must be an integer (cannot be a long), TODO better idea?
attributes.putValue("Subsystem-Type", feature.getType());
for (Section section : feature.getAdditionalSections("subsystem-manifest")) {
String sl = section.getAttributes().get("startLevel");
try {
subsystemStartLevel = Integer.parseInt(sl);
} catch (NumberFormatException nfe) {
// Not a valid start level
}
BufferedReader br = new BufferedReader(new StringReader(section.getContents()));
String line = null;
while ((line = br.readLine()) != null) {
int idx = line.indexOf(':');
if (idx > 0) {
String key = line.substring(0, idx);
String value;
idx++;
if (line.length() > idx)
value = line.substring(idx);
else
value = "";
attributes.putValue(key.trim(), value.trim());
}
}
}
mf.write(os);
} finally {
os.closeEntry();
}
return subsystemStartLevel;
}