Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
scr generator 1.14.0
-
None
Description
The parser relies implicitly on an order of tags in a component descriptor XML.
https://github.com/apache/felix/blob/1efe76fff7f4dcc5da5aa450ee8e7a774c874256/tools/org.apache.felix.scr.generator/src/main/java/org/apache/felix/scrplugin/xml/ComponentDescriptorIO.java#L546
} else if (localName.equals(IMPLEMENTATION)) { ... this.currentClass = new ClassDescription(cl, "classpath:" + className); ... } else if (localName.equals(SERVICE)) { this.currentService = new ServiceDescription(null); this.currentClass.add(this.currentService);
This chunk of code expects <implementation> tag to happen before <service> tag. If the order is reversed, then parsing files with NullPointerException when trying to call "add" on an uninitialized variable.