Hi Brock, It will be short for 4.2.11 (eventually 4.2.12): I don’t want to hold 4.2.11 any longer.
As you have a workaround (removing xml jar from lib/endorsed), I would prefer to target 4.2.12 if you don’t mind. Regards JB > Le 3 mars 2021 à 21:14, brock samson <[email protected]> a écrit : > > would it be possible to have this fixed in the upcoming 4.2.11 release? > > From: Jean-Baptiste Onofre <[email protected]> > Sent: Wednesday, March 3, 2021 2:50 AM > To: user <[email protected]> > Subject: Re: Karaf 4.2.10 - NullPointerException during xml parsing > > Hi, > > Yes, 90% of the use cases don’t need java.xml in lib/endorsed. > > Regards > JB > >> Le 3 mars 2021 à 08:42, brock samson <[email protected] >> <mailto:[email protected]>> a écrit : >> >> Hi JB >> >> I know you are quite busy so no need to apologize. >> >> Just to make sure I understood you correctly, the >> org.apache.karaf.specs.java.xml-4.2.10.jar can be permanently removed from >> the /endorsed dir without any negative side effects, right? >> >> >> From: Jean-Baptiste Onofre <[email protected] <mailto:[email protected]>> >> Sent: Wednesday, March 3, 2021 12:14 AM >> To: user <[email protected] <mailto:[email protected]>> >> Subject: Re: Karaf 4.2.10 - NullPointerException during xml parsing >> >> Hi Brock, >> >> Sorry for the very late answer. >> >> The reason why javax.xml is in lib/endorsed folder is because core Karaf >> loads just the spec and let you install the impl. >> Anyway, you can remove it from endorsed and install bundles, it works as >> well. >> It’s basically what we plan to do by default as part of KARAF-6703. >> >> Regards >> JB >> >>> Le 3 mars 2021 à 05:50, brock samson <[email protected] >>> <mailto:[email protected]>> a écrit : >>> >>> Hi João >>> >>> Thank you for looking into this issue. Its nice to know it no longer >>> appears in karaf 4.3, but is there another way to resolve this in 4.2.10 >>> without changing the code? More specifically, is there a reason why >>> org.apache.karaf.specs.java.xml-4.2.10.jar resides in the /endorsed >>> directory as opposed to being exposed by a bundle? The reason for me asking >>> is because the bundle approach would allow me to choose which >>> implementation my bundle would reference, while the current endorsed >>> approach leaves me no choice. >>> >>> Regards, >>> >>> Brock >>> >>> >>> From: João Assunção <[email protected] >>> <mailto:[email protected]>> >>> Sent: Tuesday, March 2, 2021 5:28 PM >>> To: [email protected] <mailto:[email protected]> >>> <[email protected] <mailto:[email protected]>> >>> Subject: Re: Karaf 4.2.10 - NullPointerException during xml parsing >>> >>> Hi Brock, >>> >>> I tried your jar but it failed due to the layout of the jar (the MANIFEST >>> was not the first entry in the jar or something like that). I created a >>> bundle with our code and when I tried with karaf 4.3 it passed. >>> I then tried with 4.2.7 and I experienced the same NPE. Apparently the >>> behavior when the errorHandler is set to null is different between >>> implementations of the XML libs supplied in these two versions of karaf. >>> In your code setting the error handler to builder.setErrorHandler(new >>> org.xml.sax.helpers.DefaultHandler()); seems to do the trick. >>> >>> I noticed your manifest is importing a bunch of packages not required for >>> the code in question. >>> >>> Regards >>> João Assunção >>> >>> Email: [email protected] <mailto:[email protected]> >>> Mobile: +351 916968984 >>> Phone: +351 211933149 >>> Web: www.exploitsys.com <http://www.exploitsys.com/> >>> >>> >>> >>> >>> On Tue, Mar 2, 2021 at 3:33 AM brock samson <[email protected] >>> <mailto:[email protected]>> wrote: >>> hi, JB. did you get a chance to run my bundle? >>> >>> >>> From: brock samson <[email protected] >>> <mailto:[email protected]>> >>> Sent: Wednesday, February 24, 2021, 11:18 PM >>> To: [email protected] <mailto:[email protected]> >>> Subject: Re: Karaf 4.2.10 - NullPointerException during xml parsing >>> >>> hi, JB. >>> >>> thank you for looking at this. The attached zip (rename its extension from >>> .txt to .zip) contains both the bundle (rename its extension from .txt to >>> .jar) and its feature file. the bundle should be placed in the /bundles >>> dir, and you know what to do with the feature file =) >>> here are some points regarding the bundle: >>> 1) the bundle executes automatically during Karaf startup to make it easier >>> for you. >>> 2) The bundle contains both the schema and the xml, so you dont have to >>> really do anything to the bundle itself in order for it to just run >>> 3) The bundle contains props.properties where you can specify external >>> locations to both schema and xml file if you choose to do so for any >>> reason. The provided files will be ignored in such case. >>> 4) I have also provided the source .java alongside the binary just in case. >>> >>> again, really appreciate you taking the time to look at it. thanks!!! >>> >>> Brock Samson >>> >>> >>> From: Jean-Baptiste Onofre <[email protected] <mailto:[email protected]>> >>> Sent: Tuesday, February 23, 2021 11:56 AM >>> To: [email protected] <mailto:[email protected]> >>> <[email protected] <mailto:[email protected]>> >>> Subject: Re: Karaf 4.2.10 - NullPointerException during xml parsing >>> >>> Hi Brock, >>> >>> Maybe you have xerces installed as bundle in your distribution ? >>> >>> It sounds like a version mismatch. >>> >>> Can you share the bundles installed ? >>> >>> Thanks, >>> Regards >>> JB >>> >>>> Le 23 févr. 2021 à 16:55, brock samson <[email protected] >>>> <mailto:[email protected]>> a écrit : >>>> >>>> Hello, >>>> >>>> I am using Karaf 4.2.10 and attempting to perform a rather simple xml >>>> parsing: >>>> >>>> Caused by: java.lang.NullPointerException >>>> at org.apache.xerces.util.ErrorHandlerProxy.error(Unknown >>>> Source) ~[!/:?] >>>> at >>>> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:137) >>>> ~[?:1.8.0_102] >>>> at >>>> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396) >>>> ~[?:1.8.0_102] >>>> at >>>> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) >>>> ~[?:1.8.0_102] >>>> at >>>> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284) >>>> ~[?:1.8.0_102] >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1900) >>>> ~[?:1.8.0_102] >>>> at >>>> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:740) >>>> ~[?:1.8.0_102] >>>> at >>>> com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.startElement(ValidatorHandlerImpl.java:570) >>>> ~[?:1.8.0_102] >>>> at >>>> org.apache.xerces.jaxp.JAXPValidatorComponent$XNI2SAX.startElement(Unknown >>>> Source) ~[!/:?] >>>> at >>>> org.apache.xerces.jaxp.JAXPValidatorComponent.startElement(Unknown Source) >>>> ~[!/:?] >>>> at >>>> org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown >>>> Source) ~[!/:?] >>>> at >>>> org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown >>>> Source) ~[!/:?] >>>> at >>>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown >>>> Source) ~[!/:?] >>>> at >>>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown >>>> Source) ~[!/:?] >>>> at >>>> org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) ~[!/:?] >>>> at >>>> org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) ~[!/:?] >>>> at org.apache.xerces.parsers.XMLParser.parse(Unknown >>>> Source) ~[!/:?] >>>> at org.apache.xerces.parsers.DOMParser.parse(Unknown >>>> Source) ~[!/:?] >>>> at >>>> org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) ~[!/:?] >>>> at >>>> javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121) >>>> ~[?:1.8.0_102] >>>> >>>> After snooping around, I noticed a >>>> /container/lib/endorsed/org.apache.karaf.specs.java.xml-4.2.10.jar lib >>>> containing parser-related libs. My code executed successfully once I ran >>>> Karaf without this particular file, though I don’t feel right just pulling >>>> it out of Karaf blindly, as its absence creates a distinct possibility of >>>> unforeseen issues down the road. >>>> >>>> Here are the only imports my bundle references in its manifest: >>>> Import-Package: >>>> javax.xml.transform,javax.xml.transform.stream,org.xml.sax,javax.xml.parsers,javax.xml.validation >>>> >>>> There are no entries under Bundle-Classpath >>>> >>>> Lastly, here is the java code that performs the xml parsing: >>>> >>>> DocumentBuilderFactory factory = >>>> DocumentBuilderFactory.newInstance(); >>>> SchemaFactory sf = >>>> SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); >>>> Schema schema = sf.newSchema(new StreamSource(new >>>> FileInputStream("<LOCATION-OF-THE-SCHEMA-FILE>"))); >>>> factory.setNamespaceAware(true); >>>> factory.setSchema(schema); >>>> factory.setExpandEntityReferences(false); >>>> factory.setXIncludeAware(false); >>>> >>>> factory.setFeature("http://xml.org/sax/features/external-parameter-entities >>>> <http://xml.org/sax/features/external-parameter-entities>",false); >>>> >>>> factory.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd >>>> <http://apache.org/xml/features/nonvalidating/load-external-dtd>",false); >>>> >>>> factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl >>>> <http://apache.org/xml/features/disallow-doctype-decl>", true); >>>> >>>> factory.setFeature("http://xml.org/sax/features/external-general-entities >>>> <http://xml.org/sax/features/external-general-entities>",false); >>>> >>>> DocumentBuilder builder = factory.newDocumentBuilder(); >>>> builder.setErrorHandler(null); >>>> byte[] fileContent = >>>> Files.readAllBytes(Paths.get("<LOCATION-OF-THE-XML-FILE-TO-BE-PARSED>")); >>>> InputStream inStream = new ByteArrayInputStream(fileContent); >>>> Document doc = builder.parse(inStream); >>>> >>>> Please advise me as to what I am doing wrong, as well as a possible >>>> solution. Thank you for your time! >>>> >>>> Sincerely, >>>> >>>> Brock Samson
