Robert Munteanu created SLING-12173:
---------------------------------------

             Summary: Switch JSON parser implemetation from Apache Johnzon
                 Key: SLING-12173
                 URL: https://issues.apache.org/jira/browse/SLING-12173
             Project: Sling
          Issue Type: Improvement
          Components: Maven Plugins and Archetypes
            Reporter: Robert Munteanu
            Assignee: Robert Munteanu
             Fix For: OSGi Feature Maven Plugin 1.8.2


The slingfeature-maven-plugin currently uses the Jakarta JSON implementation of 
the Apache Johnzon parser. This works very well in 'clean' classpaths. This is 
however problematic when both the jakarta.json and javax.json Johnzon parser 
end up on the same classpath. 

The main jar has the following entry

- META-INF/services/javax.json.spi.JsonProvider = 
org.apache.johnzon.core.JsonProviderImpl

The {{-jakarta}} jar has the following entry

- META-INF/services/jakarta.json.spi.JsonProvider = 
org.apache.johnzon.core.JsonProviderImpl

I have mostly seen this in the Eclipse IDE, where projects fail to update with 
hard to isolate errors (see below). As a workaround, we could switch to a 
different implementation.

{noformat}java.util.ServiceConfigurationError: jakarta.json.spi.JsonProvider: 
org.apache.johnzon.core.JsonProviderImpl not a subtype
        at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:593)
        at 
java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1244)
        at 
java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
        at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
        at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
        at jakarta.json.spi.JsonProvider.provider(JsonProvider.java:69)
        at jakarta.json.Json.createReader(Json.java:189)
        at 
org.apache.sling.feature.maven.JSONFeatures.read(JSONFeatures.java:64)
        at 
org.apache.sling.feature.maven.ProjectHelper.readFeatureFile(ProjectHelper.java:622)
        at 
org.apache.sling.feature.maven.Preprocessor.readProjectFeatures(Preprocessor.java:304)
        at 
org.apache.sling.feature.maven.Preprocessor.process(Preprocessor.java:145)
        at 
org.apache.sling.feature.maven.Preprocessor.process(Preprocessor.java:110)
        at 
org.apache.sling.feature.maven.extensions.DependencyLifecycleParticipant.afterProjectsRead(DependencyLifecycleParticipant.java:87)
        at 
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.executeParticipants(ProjectRegistryManager.java:824)
        at 
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.lambda$15(ProjectRegistryManager.java:791)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:394)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:275)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:214)
        at 
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.lambda$14(ProjectRegistryManager.java:790)
        at java.base/java.util.HashMap$Values.forEach(HashMap.java:1065)
        at 
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.lambda$11(ProjectRegistryManager.java:788)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:394)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:275)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:214)
        at 
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.readMavenProjectFacades(ProjectRegistryManager.java:760)
        at 
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:392)
        at 
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:366)
        at 
org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.refresh(ProjectRegistryManager.java:318)
        at 
org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.getProjectFacade(MavenBuilder.java:146)
        at 
org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.lambda$0(MavenBuilder.java:84)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.executeBare(MavenExecutionContext.java:394)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:275)
        at 
org.eclipse.m2e.core.internal.embedder.MavenExecutionContext.execute(MavenExecutionContext.java:214)
        at 
org.eclipse.m2e.core.internal.builder.MavenBuilder$BuildMethod.execute(MavenBuilder.java:83)
        at 
org.eclipse.m2e.core.internal.builder.MavenBuilder.build(MavenBuilder.java:192)
        at 
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1079)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:296)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:352)
        at 
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:441)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:444)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:555)
        at 
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:503)
        at 
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:585)
        at 
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:207)
        at 
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:300)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63){noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to